[英]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.