繁体   English   中英

为什么在 flutter web 中运行代码时,Cubit 构造函数中未监听 Internet 连接状态

[英]Why internet connection status is not listened in Cubit Constructor when running code in flutter web

我使用connectivity_plus来监听 Internet 连接并使用 flutter cubit 处理状态。

当我在 flutter web 上运行代码时,状态一直停留在NetLoading()上,直到一次,我关闭(打开)互联网,但在 android 设备上运行不存在问题。

我的肘

class NetConnectionCubit extends Cubit<NetConnectionState> {
  final Connectivity _connectivity = Connectivity();
  late StreamSubscription _connectivityStreamSubscription;

  NetConnectionCubit() : super(NetLoading()) {
    _connectivityStreamSubscription =
        _connectivity.onConnectivityChanged.listen(
      (result) {
        if (result == ConnectivityResult.none) {
          emitNetDisConnected();
        } else {
          emitNetConnected();
        }
      },
    );
  }

  void emitNetConnected() => emit(NetConnected());

  void emitNetDisConnected() => emit(NetDisconnected());

  /// close(cancel) _connectivityStreamSubscription
  /// but we know in all of app lifecycle this stream bust be live
  /// so this function never be run
  @override
  Future<void> close() {
    _connectivityStreamSubscription.cancel();
    return super.close();
  }
}

和 BlocBuilder

MultiBlocProvider(
      providers: [
        BlocProvider<NetConnectionCubit>(create: (_) => NetConnectionCubit()),
      ],
      child: BlocBuilder<NetConnectionCubit, NetConnectionState>(
        builder: (context, state) {
          return child()
....

使用checkConnectivity检查当前状态。 更改仅适用于 stream。

final connectivityResult = await Connectivity().checkConnectivity();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM