You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter 使用 Provider 实现全应用网络连接检测时报错如何解决?

网络连接检测功能报错排查步骤
  • 检查pubspec.yaml依赖配置
    确认data_connection_checker(空安全项目需使用兼容版data_connection_checker_nulls)、provider版本与项目Flutter版本适配,执行flutter clean后重新运行flutter pub get清除缓存依赖问题。
  • 校验StreamProvider类型声明匹配
    必须显式指定StreamProvider监听的数据流泛型类型,正确写法参考:
    StreamProvider<NetworkStatus>(
      create: (context) => NetworkStatusService().networkStatusController.stream,
      initialData: NetworkStatus.Offline,
      child: MyApp(),
    )
    
    常见错误为漏写泛型声明,或create方法返回的流类型与泛型不匹配导致类型报错。
  • 验证DataConnectionChecker监听逻辑
    确认网络状态服务类的流监听逻辑正确,标准实现参考:
    enum NetworkStatus { Online, Offline }
    
    class NetworkStatusService {
      final DataConnectionChecker _dataConnectionChecker = DataConnectionChecker();
      final StreamController<NetworkStatus> networkStatusController = StreamController<NetworkStatus>();
    
      NetworkStatusService() {
        _dataConnectionChecker.onStatusChange.listen((status) {
          networkStatusController.add(_getStatusFromResult(status));
        });
      }
    
      NetworkStatus _getStatusFromResult(DataConnectionStatus status) {
        switch(status) {
          case DataConnectionStatus.connected:
            return NetworkStatus.Online;
          case DataConnectionStatus.disconnected:
            return NetworkStatus.Offline;
          default:
            return NetworkStatus.Offline;
        }
      }
    }
    
  • 排查组件层状态调用逻辑
    确认子组件获取状态时,Provider.of的listen参数配置正确:在build方法外调用需设置listen: false,需响应网络状态变化的UI组件优先用Consumer包裹,避免build过程中触发状态更新导致异常。
  • 校验空安全适配
    开启空安全的项目必须使用支持空安全的data_connection_checker_nulls插件替代已停止维护的原版data_connection_checker,避免空类型安全报错。

内容的提问来源于stack exchange,提问作者Hone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:21:02