首页 > 解决方案 > 如何从流监听回调中返回 Future?

问题描述

我有以下代码flutter

getData() {
  final linksStream = getLinksStream().listen((String uri) async {
     return uri;   
  });
}

getData方法中,我想返回uri来自流侦听器的值。由于该值是稍后生成的,因此我正在考虑在getData方法中响应 Future 对象。但我不知道如何将uri的值作为Future. 在javascript中,我可以简单地创建一个promiseresolveuri。我怎样才能实现它dart

标签: flutterdart

解决方案


在您的代码中,“返回 uri”不是从 getData 返回,而是从作为监听参数的匿名函数返回。正确的代码如下:

Future<String> getData() {
  final Completer<String> c = new Completer<String>();
  final linksStream = getLinksStream().listen((String uri) {
     c.complete(uri);   
  });
  return c.future;
}

推荐阅读