flutter - 如何从流监听回调中返回 Future?
问题描述
我有以下代码flutter
:
getData() {
final linksStream = getLinksStream().listen((String uri) async {
return uri;
});
}
在getData
方法中,我想返回uri
来自流侦听器的值。由于该值是稍后生成的,因此我正在考虑在getData
方法中响应 Future 对象。但我不知道如何将uri
的值作为Future
. 在javascript
中,我可以简单地创建一个promise
和resolve
值uri
。我怎样才能实现它dart
?
解决方案
在您的代码中,“返回 uri”不是从 getData 返回,而是从作为监听参数的匿名函数返回。正确的代码如下:
Future<String> getData() {
final Completer<String> c = new Completer<String>();
final linksStream = getLinksStream().listen((String uri) {
c.complete(uri);
});
return c.future;
}
推荐阅读
- android - 如何从 Delphi Android 应用程序开始视频通话?
- android - 构建 AOSP 后启动模拟器失败(黑屏)
- javascript - 使用文件类型输入发布 $http 请求并获取 req.body 和 req.file 不使用 multer nodejs
- dart - Flutter如何在appbar的标题下对齐字幕?
- c++ - 为什么向量构造函数在 unordered_map emplace 中使用时只取参数的最后一个值?
- android - 在 RecyclerView 中滚动后视图重置
- json - Foursquare API 返回的数据与其网站不同,为什么?
- azure-iot-sdk - iothub_client/src/iothubtransport_mqtt_common.c 函数:初始化连接。mqtt_client 等待 CONNACK 超时
- html - 仅显示每个类别的第一个元素
- node.js - nodemon中的选项'-r'是什么?