1. 正确的网络请求
我用的是
http
库,pub.dev/flutter第一的库。
Response response;
try {
response = await get(url)
.timeout(Duration(seconds: 5), onTimeout: () {
return Response("body", 400);
});
} catch (e) {
print(e);
response = Response("body", 400);
}
if (response.statusCode == 200) {
/// TODO
} else {
/// TODO
}
这样可以处理几乎所有情况
- try-catch 处理断网或者无网产生的
SocketException
,避免报错flutter: SocketException: Failed host lookup: 'worldtimeapi.org' (OS Error: nodename nor servname provided, or not known, errno = 8)
。 - 设置
timeout
处理连接超时的情况,返回一个400的Response其实是发现iOS挂上代理后请求不到数据,也不报错一直卡在这而返回的。 - 最后就是
statusCode
的处理,这个无需多言。
网友评论