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