【问题标题】:Return result from inner stream listen DART从内部流监听 DART 返回结果
【发布时间】:2019-06-10 20:15:53
【问题描述】:

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

所以我有外在功能和内在功能。如何从外部内部返回结果?

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;
}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

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

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

    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() 已经被调用并且Futuresend 返回之后意味着什么已经完成了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 2019-12-07
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多