簡體   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