已初始化Firebase仍报‘No Firebase App [DEFAULT]’错的解决方法
解决Flutter Firebase注册时的"No Firebase App '[DEFAULT]' has been created"错误
问题场景
在Android Studio开发Flutter应用时,点击注册页面的提交按钮,触发以下错误:
No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
但已在main.dart中调用Firebase.initializeApp()。
相关代码片段
main.dart部分代码
void main() async { WidgetsFlutterBinding.ensureInitialized(); await SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, ]); // 锁定竖屏,禁止横屏 runApp(MyApp()); } class MyApp extends StatefulWidget { MyApp({super.key}); @override State<MyApp> createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { DarkThemeProvider themeChangeProvider = DarkThemeProvider(); void getCurrentAppTheme() async { themeChangeProvider.setDarkTheme = await themeChangeProvider.darkThemePrefs .getTheme(); // 从SharedPreferences获取主题设置 } @override void initState() { getCurrentAppTheme(); super.initState(); Firebase.initializeApp().whenComplete(() { print("Intialised"); setState(() {}); }); } final Future<FirebaseApp> _firebaseInitialisation = Firebase.initializeApp(); @override Widget build(BuildContext context) { return FutureBuilder( future: _firebaseInitialisation, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const MaterialApp(
注册按钮逻辑(另一个文件)
bool _isLoading = false; void _submitFormOnRegister() async { final isValid = _formKey.currentState!.validate(); FocusScope.of(context).unfocus(); setState(() { _isLoading = true; }); if (isValid) { _formKey.currentState!.save(); try { await authInstance.createUserWithEmailAndPassword( email: _emailTextController.text.toLowerCase().trim(), password: _passwordTextController.text.trim()); print('Registered'); } on FirebaseException catch (error) { UniversalFunctions.errorDialog(subtitle: '${error.message})', context: context); setState(() { _isLoading = false; }); } catch (error) { UniversalFunctions.errorDialog(subtitle: '$error', context: context); setState(() { _isLoading = false; }); } finally { setState(() { _isLoading = false; }); } } }
Firebase Auth实例定义(单独文件)
import 'package:firebase_auth/firebase_auth.dart'; final FirebaseAuth authInstance = FirebaseAuth.instance; final User? user = authInstance.currentUser; final uid = user!.uid;
排查过程
- 怀疑按钮触发时Firebase尚未完成初始化,尝试将初始化代码移到
main函数中,但问题未解决。
最终解决方案
安装FlutterFire CLI,并修改Firebase初始化代码,指定平台默认配置:
await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, );
内容的提问来源于stack exchange,提问作者Alek
相关产品推荐
相关产品推荐

