http - 如果http请求失败,如何添加超时?

标签 http dart flutter

我有一个从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,允许用户重试。在故意破坏代码的情况下出现,但在缺乏连通性的情况下则不会出现。

谢谢

最佳答案

如果请求超时(例如,因为没有连接),则服务器无响应。试试这个:

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()中添加需要发生的一切。

关于http - 如果http请求失败,如何添加超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56242964/

相关文章:

ajax - 跨子域的跨源资源共享 (CORS)

flutter - 根据父级大小按比例缩小小部件中的所有子级

javascript - 检测并记录外部 JavaScript 或 CSS 资源无法加载的时间

http - HTTP 和 REST 有什么区别?

android - flutter : Custom TextFormField is not saving values onSaved

dart - 具有自动完成功能的 Polymer/Dart 输入

flutter - 如何将延迟加载添加到此列表?

dart - 如何创建自定义底部标签栏

flutter GetX : Animation with GetxController

PHP 获取 JSON POST 数据