错误:flutter/lib/ui/ui_dart_state.cc(209)] 未处理的异常:[core/duplicate-app] 名为“[DEFAULT]”的 Firebase 应用程序已存在

adm*_*ffy 30 dart firebase flutter

由于我是 firebase 的新手,我已经存在重复名称的问题,我需要你的帮助。

\n
E/flutter (21802): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: [core/duplicate-app] A Firebase App named "[DEFAULT]" already exists\nE/flutter (21802): #0      MethodChannelFirebase.initializeApp\npackage:firebase_core_platform_interface/\xe2\x80\xa6/method_channel/method_channel_firebase.dart:111\nE/flutter (21802): <asynchronous suspension>\nE/flutter (21802): #1      Firebase.initializeApp\npackage:firebase_core/src/firebase.dart:41\nE/flutter (21802): <asynchronous suspension>\nE/flutter (21802): #2      main\npackage:flutterbuyandsell/main.dart:47\nE/flutter (21802): <asynchronous suspension>\nE/flutter (21802):\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa6/method_channel/method_channel_firebase.dart:111

\n

方法_通道_firebase

\n

包:firebase_core/src/firebase.dart:41

\n

Firebase.dart

\n

包:flutterbuyandsell/main.dart:47

\n

main.dart 上的 firebase

\n

omz*_*zer 72

我通过向initializeApp方法添加一个名称解决了这个问题:

await Firebase.initializeApp(
  name: 'name-here',
  options: DefaultFirebaseOptions.currentPlatform,
)
Run Code Online (Sandbox Code Playgroud)

为了保持一致性,我使用了 Firebase 控制台中使用的相同名称作为我的项目 ID,请记住,您不能在名称中添加空格(只能添加破折号-)。


Exo*_*uid 21

如果您使用 FlutterFire,这是正确的解决方案:

如果此文件中的任何值(如projectId/ PROJECT_IDapiKey/API_KEY等)与ios/Runner/GoogleService-Info.plist此文件中的信息不匹配,则此解决方案应该适合您firebase_options.dart。这意味着您的第二个应用程序的 Firebase 初始化以某种方式搞砸了,因此,我们需要修复它。

从项目根目录中,按顺序运行这些命令:

删除包含可能未通过 FlutterFire 正确更新的 Firebase 信息的文件:

rm ios/Runner/GoogleService-Info.plist
Run Code Online (Sandbox Code Playgroud)

运行configure以重新创建该GoogleService-Info.plist文件:

flutterfire configure
Run Code Online (Sandbox Code Playgroud)

清理你的构建:

flutter clean
Run Code Online (Sandbox Code Playgroud)

清理后再次获取依赖:

flutter pub get
Run Code Online (Sandbox Code Playgroud)

运行您的应用程序(从头开始,无需热重载!):

flutter run
Run Code Online (Sandbox Code Playgroud)

  • 这应该是人们检查的第一件事(他们的 plist 文件是否与 firebase_options.dart 匹配)。如果这不起作用,上面的所有内容更多的是解决问题的方法。就我而言,我没有再次调用 flutterfire configure,我只是手动更改 plist 文件中的值以进行匹配。 (3认同)
  • 这应该是正确的答案。如果您安装了多个 Firebase 项目,可能会出现重复的 Firebase 名称问题 (2认同)
  • 这应该标记为答案。 (2认同)
  • 我同意其他评论。这应该是第一个答案。其他答案具有误导性,因为明确为 Firebase 应用程序设置名称适用于您想要向应用程序添加多个 Firebase 项目的情况。 (2认同)

小智 15

flutter clean
Run Code Online (Sandbox Code Playgroud)

flutter pub get
Run Code Online (Sandbox Code Playgroud)

连续执行这两个命令解决了我的问题。

  • 它起作用的原因可能是因为之前添加了其他 Firebase 配置。因此,通过清理和获取项目,旧资源将被淘汰。 (2认同)

小智 8

在 Flutter 中添加这个

注意 - 在整个项目中仅使用一次“Firebase.initializeApp”。

// 等待默认 Firebase 应用程序初始化

if (Firebase.apps.isEmpty) {
  await Firebase.initializeApp(
  name: 'YourAPP',
  options: DefaultFirebaseOptions.currentPlatform,
 ).whenComplete(() {
  print("completedAppInitialize");
 });
}
Run Code Online (Sandbox Code Playgroud)


小智 7

我通过添加 Firebase 项目的名称解决了这个问题。你可以试试这个:

await Firebase.initializeApp(
  name: 'name of your App in FireStore',
  options: DefaultFirebaseOptions.currentPlatform,
)
Run Code Online (Sandbox Code Playgroud)


小智 0

 if (Firebase.apps.isEmpty) {
    await Firebase.initializeApp();
 }
Run Code Online (Sandbox Code Playgroud)