Flutter 网络

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的处理,这个无需多言。

你可能感兴趣的:(Flutter 网络)