Flutter集成Firebase模拟器运行报DefaultFirebaseOptions未定义错误
运行时报错:Undefined name 'DefaultFirebaseOptions'
报错触发场景
集成Firebase后在模拟器运行应用时抛出动态类型错误,系统提示名称未定义,对应业务代码如下:
import 'package:grabbit_v6/data/apiClient/api_client.dart'; import 'package:firebase_core/firebase_core.dart'; import '../../firebase_options.dart'; class InitialBindings extends Bindings { @override void dependencies() async { Get.put(PrefUtils()); Get.put(ApiClient()); Connectivity connectivity = Connectivity(); Get.put(NetworkInfo( // ignore: todo connectivity)); //TODO : run command "flutterfire configure" to generate firebase_options file await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); } }
报错根因
DefaultFirebaseOptions是FlutterFire配置命令自动生成的类,没有执行配置生成命令、或者生成后导入路径错误,都会导致编译器找不到这个类的定义。
修复步骤
- 生成Firebase配置文件
在项目根目录终端执行命令:flutterfire configure
按照命令行交互提示,选择已创建的Firebase项目,勾选需要支持的运行平台(Android、iOS等),命令执行完成后会自动在lib目录下生成firebase_options.dart文件,文件内就包含DefaultFirebaseOptions类的完整定义。 - 修正导入路径
检查当前initial_bindings.dart文件和生成的firebase_options.dart文件的相对位置,调整代码里的import路径。比如如果initial_bindings.dart存放在lib/bindings/目录下,对应正确的导入路径应该是import '../firebase_options.dart';,路径层级不匹配会直接导致导入失效。 - 清理缓存重编译
执行flutter clean清理历史构建缓存,再重新执行flutter run启动应用即可。
注意:如果已经执行过配置命令仍然报错,优先检查导入路径是否正确,不要直接复制其他项目的导入路径,要以自己项目的实际文件层级为准。
内容的提问来源于stack exchange,提问作者John Michael Tan
相关产品推荐
相关产品推荐

