我有一个从Firebase请求json数据的应用程序。我为代码失败实现了一个条件,但是当缺少连接时,请求不会超时。是否可以添加超时以使AlertDialog出现?
return http
.post('https://flutter**********.com/products.json',
body: json.encode(productData))
.then((http.Response response) {
if(response.statusCode != 200 && response.statusCode != 201) {
_isLoading = false;
notifyListeners();
return false;
}
收到不同的statusCode时,返回 false
,然后显示一个AlertDialog,允许用户重试。在故意破坏代码时出现,而在缺乏连通性时不会出现。
谢谢
答案 0 :(得分:0)
如果请求超时(例如,因为没有连接),则服务器将没有响应。试试这个:
try {
http.post('https://flutter**********.com/products.json',
body: json.encode(productData))
.then((http.Response response) {
if(response.statusCode != 200 && response.statusCode != 201) {
_processTimeout();
return false;
};
} on TimeoutException catch (_) {
_processTimeout();
return false;
}
添加_processTimeout()
中需要发生的一切。