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

Flutter应用从Firestore获取数据时出现providerinstaller相关报错如何解决

Local module descriptor class for providerinstaller not found.
D/ConnectivityManager(21222): requestNetwork and the calling app is: com.example.ecommerce
I/DynamiteModule(21222): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller(21222): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
W/ConnectivityManager.CallbackHandler(21222): callback not found for CALLBACK_AVAILABLE messag

错误产生原因
  • 核心是Google Play服务(GMS)异常:Firestore 依赖GMS的安全提供器组件,运行的设备/模拟器未安装GMS、GMS版本过旧、或GMS服务未正常运行时,就会加载失败providerinstaller模块,抛出该警告。
  • 网络回调生命周期不匹配:ConnectivityManager的报错是因为原生层收到网络状态变更通知时,对应的回调实例已经被销毁,通常是Flutter侧的网络监听没有在组件销毁时主动取消,或是Firebase SDK内部的网络请求和原生层回调生命周期不对齐导致。
  • Firebase初始化顺序错误:未等Firebase完全初始化完成就发起Firestore数据请求,会导致依赖的GMS模块还没加载就被调用,触发报错。
解决方法
  • 校验运行环境:如果使用Android模拟器,需选择带Google Play标识的系统镜像,启动后登录Google账号并将Google Play服务更新至最新版本;如果是真机运行,确认设备预装了可用的GMS服务,国内无GMS的设备可开启Firestore离线持久化功能规避该报错,或适配无GMS环境的Firebase运行方案。
  • 修正Firebase初始化逻辑:确保启动流程中先完成Flutter引擎和Firebase的初始化,再发起任何Firestore请求,参考初始化代码:
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // 等待Firebase初始化完成再启动应用
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(const MyApp());
}
  • 对齐依赖版本:检查pubspec.yaml中所有Firebase相关依赖的版本匹配,同时保证android/build.gradle中的com.google.gms:google-services插件版本和Firebase SDK版本兼容,建议统一升级所有Firebase相关依赖到最新稳定版。
  • 修复网络监听生命周期:如果项目中自行实现了网络状态监听逻辑,务必在StatefulWidget的dispose生命周期中主动取消监听,避免原生层出现找不到回调的异常;如果使用第三方网络监听库,升级到最新版本即可解决该适配问题。
  • 临时降级兼容:如果上述操作后仍有报错,可将android/build.gradle中的GMS插件版本暂时降级到4.3.10,该版本对低版本GMS服务的兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:54:02