Вы должны окружить его блоком try catch, например:
import 'package:http/http.dart' as http;
int timeout = 5;
try {
http.Response response = await http.get('someUrl').
timeout(Duration(seconds: timeout));
if (response.statusCode == 200) {
// do something
} else {
// handle it
}
} on TimeoutException catch (e) {
print('Timeout Error: $e');
} on SocketException catch (e) {
print('Socket Error: $e');
} on Error catch (e) {
print('General Error: $e');
}
Исключение сокета будет немедленно сгенерировано, если телефон знает, что нет соединения (например, отключены как WiFi, так и соединение для передачи данных. ).
Исключение тайм-аута будет сгенерировано после заданного тайм-аута, например, если серверу требуется слишком много времени для ответа или пользовательское соединение очень плохое и т. Д. c.
Также не забудьте справиться с ситуацией, если код ответа не = 200.