当定义future 时,如下所示:

Future<HttpRequest> httpRequest =  HttpRequest.request(url,
      method: method, requestHeaders: requestHeaders);

我想处理5秒后的超时.我是这样编写代码的:

httpRequest.timeout(const Duration (seconds:5),onTimeout : _onTimeout());

其中,我的超时函数是:

_onTimeout() => print("Time Out occurs");

根据Future timeout() method documentation,如果省略onTimeout,超时将导致返回的将来以TimeoutException结束.但是使用我的代码,我的方法_onTimeout()被正确地调用(但是立即调用,而不是在5秒之后),并且我总是得到一个

5秒后出现时间异常...(0:00:05.000000之后的TimeoutException:future 未完成)

我错过了什么吗?

推荐答案

更改此行

httpRequest.timeout(const Duration (seconds:5),onTimeout : _onTimeout());

httpRequest.timeout(const Duration (seconds:5),onTimeout : () => _onTimeout());

or just pass a reference 至 the function (without the ())

httpRequest.timeout(const Duration (seconds:5),onTimeout : _onTimeout);

This way the closure that calls _onTimeout() will be passed 至 timeout(). In the former code the result of the _onTimeout() call will be passed 至 timeout()

Dart相关问答推荐

Flutter 网页打开网址并获取数据

PageView.builder 给出水平视口被给出无界高度错误

如何在 dart 中获取当前和调用函数的名称?

FlutterError (setState() 在 dispose() 之后调用:(生命周期状态:defunct,not mounted)

Angular Dart 和 Polymer Dart 的区别

Dart中有没有类似python 字典(dictionary) struct ?

在 Dart 中处理字节数组时,使用 Uint8List 优于 List 有什么优势?

如何在 ListView 中添加额外的底部间距?

IOS中Webview Flutter字体太小

Flutter:如何同步使用 SharedPreferences?

如何使用 StreamBuilder 更新 TextField 的值?

如何修复 Flutter 中的Checking Dart SDK version... << was unexpected at this time错误?

Flutter-创建一个倒计时(countdown)小部件

Flutter 示例中的流布局

Flutter 中 ListView.builder 中的反向列表

Error: The argument type "String?"can't be assigned to the parameter type"String" because "String?"s nullable and "String"isn't

是什么使它成为 Dart 中的固定长度列表?

如何创建类型别名

如何使异步 Dart 调用同步?

Dart:创建一个从 0 到 N 的列表