Flutter Windows应用Firebase服务报错MissingPluginException求助
问题分析
你遇到的MissingPluginException(No implementation found for method DocumentReference#set on channel plugins.flutter.io/firebase_firestore)错误,核心原因是Windows平台缺少Firestore、Storage等服务对应的原生实现包,且部分Firebase核心依赖版本过旧,导致全平台Firebase服务(认证、FireStore、Storage)均无法正常工作。
解决方案步骤
1. 补充缺失的Firebase桌面专用依赖
修改pubspec.yaml,在dependencies块中添加Firestore和Storage的桌面实现:
dependencies: # 保留原有依赖,新增以下两行 cloud_firestore_desktop: ^0.1.0+4 firebase_storage_desktop: ^0.1.0+4
注:版本号可根据Firebase官方最新兼容版调整,确保与其他Firebase包版本匹配。
2. 升级核心Firebase依赖到兼容版本
旧版本Firebase核心包对Windows支持不完善,替换为最新稳定版:
firebase_core: ^2.15.0 firebase_auth: ^4.10.0 cloud_firestore: ^4.8.0 firebase_storage: ^11.2.0
确保所有Firebase相关包版本相互兼容,避免版本冲突。
3. 清理缓存并重新构建项目
执行命令清理旧缓存、更新依赖:
flutter clean flutter pub get
完成后重新运行Windows项目:
flutter run -d windows
4. 确认Windows平台Firebase配置完整
检查firebase_options.dart文件,确保包含Windows平台的配置项。若缺失,通过flutterfire_cli重新生成:
- 安装flutterfire_cli:
dart pub global activate flutterfire_cli
- 生成全平台配置:
flutterfire configure
选择你的Firebase项目,勾选Windows平台,自动生成包含Windows配置的firebase_options.dart。
5. 验证初始化逻辑
确保main函数中的初始化代码正确适配Windows:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); await initialServices(); runApp(const MyApp()); }
DefaultFirebaseOptions.currentPlatform会自动匹配Windows配置,无需额外修改。
测试验证
重新运行项目后,调用addCategory函数测试Firestore写入,同时尝试图片上传至Storage,确认所有Firebase服务是否正常工作。
内容的提问来源于stack exchange,提问作者Muhammad Qazmouz

