如何从流监听回调返回 Future?

Zha*_* Yi 3 dart flutter

我有以下代码flutter

getData() {
  final linksStream = getLinksStream().listen((String uri) async {
     return uri;   
  });
}
Run Code Online (Sandbox Code Playgroud)

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

Pio*_*emp 6

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

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