首页 > 解决方案 > 产生订阅流的结果

问题描述

我是 Dart 流的初学者。我有一个方法应该使用connectivity_plus包返回连接结果或异常。

  final Connectivity _connectivity = Connectivity();
  ConnectivityResult _result = ConnectivityResult.none;

  Stream<Either<ValueFailure, ConnectivityResult>> watchConnectivity() async* {
    try {
      _result = await _connectivity.checkConnectivity();
      _connectivity.onConnectivityChanged.listen((ConnectivityResult result) {
        // Got a new connectivity status!
        _result = result;
      });
      yield right(_result);
    } on PlatformException catch (e) {
      yield Left(ValueFailure.connectivityError(failMessage: e.message));
    }
  }

目前,在连接流订阅内发生新事件后,“yield right(_result)”语句不会产生任何内容。我应该如何重写代码,以便每次有连接状态更新时,流都会产生结果或失败?

标签: flutterdartasynchronousdart-asyncdart-stream

解决方案


推荐阅读