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

时间:2019-05-21 16:47:16

标签: 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,允许用户重试。在故意破坏代码时出现,而在缺乏连通性时不会出现。

谢谢

1 个答案:

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