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

已调用initializeApp()仍报No Firebase App [DEFAULT]未创建错误(Flutter)

问题解决:Firebase未初始化导致的Auth错误

问题根源

你的代码存在两个核心问题:

  1. 异步初始化未等待:_initFirebase是异步方法,但在build中直接调用时没有等待其完成,导致_addAuthStatusListener先执行,此时Firebase还未初始化完毕。
  2. 初始化位置错误:WidgetsFlutterBinding.ensureInitialized()应该在main函数中调用,而非组件内部;且Firebase.initializeApp()需要传入自动生成的平台配置参数。

修复后的代码

第一步:修改main函数

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
import 'starting_widget.dart';

void main() async {
  // 确保Flutter绑定初始化
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化Firebase并传入平台配置
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: StartingWidget(),
    );
  }
}

第二步:重构StartingWidget

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'apps/auth_app.dart';
import 'apps/main_app.dart';

class StartingWidget extends StatelessWidget {
  const StartingWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<User?>(
      // 监听用户认证状态变化
      stream: FirebaseAuth.instance.authStateChanges(),
      builder: (context, snapshot) {
        // 显示加载状态
        if (snapshot.connectionState == ConnectionState.waiting) {
          return const Scaffold(body: CircularProgressIndicator());
        }

        // 根据用户状态切换页面
        return snapshot.hasData && snapshot.data != null
            ? const MainApp()
            : const AuthApp();
      },
    );
  }
}

关键说明

  • 将Firebase初始化移至main函数,确保App启动时Firebase已完成初始化,避免后续调用Auth服务时出现未初始化错误。
  • 使用StreamBuilder替代手动添加监听,既符合Flutter的响应式UI逻辑,又避免了重复调用runApp的问题。
  • 必须传入DefaultFirebaseOptions.currentPlatform,这是FlutterFire CLI生成的跨平台配置参数,缺失会导致Firebase初始化失败。

内容的提问来源于stack exchange,提问作者Андрій Немченко

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:45:49