flutter - 内部流监听 DART 的返回结果

标签 flutter dart

如果流没有返回连接值,我需要从函数返回结果。

所以我有外部函数和内部函数。如何从外部内部返回结果?

Future<bool> send() async {

        var subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {

            if(result == ConnectivityResult.none)
                throw("No connectivity");
// Need to stop `send` function here and return some result
        });

        await doSomeWork();

        return true;
}

最佳答案

send 返回的 Future 只能完成一次,而 Stream 可能会发出多个事件 - 你无法完成它使用 true 然后再次使用 false 完成,因为一些新事件来自流。

您可以决定 send 的返回值取决于流中的第一个 事件:

Future<bool> send() async {
  var result = await Connectivity().onConnectivityChange.first;
  if (result == ConnectivityResult.none) {
    // handle no connection
    return false;
  }
  await doSomeWork(); // only happens if the first result was not `none`
  return true;
}

或者您需要决定 none 连接结果在之后 doSomeWork() 是什么意思已经调用并且从 send 返回的 Future 已经完成。

关于flutter - 内部流监听 DART 的返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56532990/

相关文章:

xcode - 如何将flutter应用程序从android studio导出到Xcode?

image - Flutter::Amazon S3 图像上传

添加 flutter_firebase_ui 后 flutter 应用程序崩溃

dart - 如何在 flutter 的小部件中创建内循环?

dart - Flutter 如何用背景图片创建卡片?

flutter - 如何抖动背景图片定位

dart - 如何在 Dart 客户端中设置 gRPC keepalive

创建用户后 Flutter Firebase 身份验证应用程序崩溃

json - 在dart中按字母顺序对对象的JSON数组以及属性的 bool 值进行排序

dart - Flutter popUntil 抛出Bad state : Future already completed