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

已初始化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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:32:53