在Bloc构造器调用super构造函数后执行的代码块是什么?有什么作用?
代码本质说明
这段放在super调用之后的大括号内容是Dart类构造函数的执行体,是InternetCubit实例完成基础初始化后,立刻执行的业务逻辑。
具体作用拆解
- 核心功能是启动网络状态变化的持续监听:这里依赖传入的
Connectivity工具实例,订阅它的onConnectivityChanged流,这个流会在设备网络连接状态发生变更时,自动下发最新的网络类型值。 - 把订阅返回的
StreamSubscription实例存入类成员变量,是为了后续Cubit销毁时可以调用cancel()方法取消监听,避免流一直持有实例引用导致内存泄漏,标准写法还需要补充Cubit的close重写逻辑,在销毁前主动取消订阅,参考代码如下:
@override Future<void> close() { connectivityStreamSubscription.cancel(); return super.close(); }
- 监听回调里的逻辑是对网络状态做判断,根据当前网络类型(WiFi/移动网络/无网络),调用对应的方法发射Cubit状态,上层UI只要监听
InternetCubit的状态,就能自动响应网络变化做对应的交互处理,比如断网时弹出离线提示、切换到移动网络时提醒用户注意流量消耗等。 - 配合构造时传入的初始状态
InternetLoading,可以实现Cubit实例化后先展示加载态,第一次拿到网络状态后自动更新为对应网络状态的交互效果。
内容的提问来源于stack exchange,提问作者IcyHerrscher
相关产品推荐
相关产品推荐

