기존에 http 요청을 dart에서 하는것에 더불어, 우리는 필히 확인해야 할 것이 있습니다.
요청 url에 대한 타임아웃, 혹은 현재 인터넷 연결이 안되는지에 대해 확인할 필요가 있습니다.
이때, 우리는 TimeoutException, SocketException 을 통해 이를 제어하고
사용자에게 알려줄 수 있습니다.
모두 try ~ catch 구문은 익숙 하실 겁니다.
기존의 Java에서와 마찬가지로 dart 또한 Exception 별로 제어가 가능한데요.아래 소스로 살펴보도록 하겠습니다.
Response? response;
Uri url = Uri.parse('ApiUrl');
try {
response = await http
.get(url)
.timeout(const Duration(seconds: 3),
onTimeout: () {
throw TimeoutException('Connection Time Out // 3');
});
} on TimeoutException {
//Timeout 일 경우
//사용자에게 Alert을 띄워주거나, 그에 맞는 데이터를 반환 등의 구현
} on SocketException {
//SocketException 일 경우
//사용자에게 Alert을 띄워주거나, 그에 맞는 데이터를 반환 등의 구현
} catch(e) {
//그외 Exception 캐치
print(e);
}
위와 같이, on 키워드로 특정 Exception 을 제어 해줄 수 있습니다.
또한, Timeout의 경우 위에 선언한바와 같이 .timeout() 메서드로 Timeout의 값을 지정해주고
onTimeout을 구현하여 exception을 throw 해주거나, 별도의 기능을 구현해주시면 됩니다.
또한, 휴대폰의 네트워크를 모두 차단해둔 상태로 http 요청할 경우 timeout이 아닌
SocketException 을 발생시킨다는 점 유의 바랍니다!
감사합니다.
[Flutter] GetX로 페이지 이동시 오류 아닌 오류 (0) | 2023.05.19 |
---|---|
[Flutter] Safari Debug 하는 방법 (0) | 2023.05.03 |
[Flutter] 플립/폴드형 핸드폰 배포시 유의사항 (0) | 2023.04.13 |
[Flutter] Sound 재생하기 (0) | 2023.04.11 |
[Flutter] String(컬러코드) 을 Color로 변환하는 방법 (feat.extension) (0) | 2023.03.28 |