Flutter Web 构建导致“未创建 Firebase 应用程序‘[默认]’ - 在新屏幕中调用”

问题描述 投票:0回答:1

我称其为初始化 Firebase。

Future initializeFirebaseApp() async {
  await Firebase.initializeApp(
    name: DefaultFirebaseOptions.firebaseName,
    options: DefaultFirebaseOptions.currentPlatform,
  )
      .whenComplete(() => Log().i('Firebase Initialized'))
      .onError((error, stackTrace) {
    Log().e('Firebase Initialize Error: $error $stackTrace');
    return Future.error("");
  });
}
fun main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await initializeFirebaseApp();

  runApp(const ProviderScope(child: IAmApp()));
}

我使用 AutoRouter。

当我使用

context.pushRoute(const PasswordLoginRoute())

更改屏幕时

PasswordLoginScreen 在 HookConsumerWidget 中有像这样的 FirebaseAuth:

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final firebaseAuth = ref.watch(firebaseAuthProvider);
    // ...
  }
@riverpod
FirebaseAuth firebaseAuth(FirebaseAuthRef ref) => FirebaseAuth.instance;

正因为如此,我得到了

No Firebase App '[DEFAULT]' has been created - call

我应该初始化 Firebase 每个页面以进行 Web 构建吗?

flutter firebase web firebase-authentication
1个回答
0
投票

看起来您在初始化 Firebase 时传递了自定义名称。

要解决此问题,请执行以下任一操作;

  1. 删除自定义名称,允许 Firebase 使用 [DEFAULT] 名称初始化应用程序;
await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  )
  1. 每当您需要使用任何 Firebase 服务时,检索自定义名称的 Firebase 应用。
final firebase = FirebaseAuth.instanceFor(app: Firebase.app(DefaultFirebaseOptions.firebaseName));
© www.soinside.com 2019 - 2024. All rights reserved.