【问题标题】:Flutter - Unhandled Exception: [core/duplicate-app]Flutter - 未处理的异常:[core/duplicate-app]
【发布时间】:2021-04-01 06:01:29
【问题描述】:

我正在使用 firebase 构建一个颤振应用程序。我使用的 Firebase 服务是实时数据库和身份验证。该应用程序通常会像往常一样启动而不会引发任何异常,但是当我热重启该应用程序时,该应用程序会冻结并引发以下异常:

Unhandled Exception: [core/duplicate-app] A Firebase App named "db2" already exists

我认为初始化 FirebaseApp 有问题。 main.dart 中的初始化代码为:

WidgetsFlutterBinding.ensureInitialized();
  final FirebaseApp app = await Firebase.initializeApp(
    name: 'db2',

有人可以帮我解决这个问题吗?谢谢!

【问题讨论】:

  • 让我知道您将此代码放在应用程序的什么位置?
  • 在main.dart文件的main()方法里面

标签: firebase flutter


【解决方案1】:

我在 firebase 中有两个应用程序。一个是 Android,另一个是 web。所以像这样初始化firebase实例

const firebaseConfig = FirebaseOptions(
apiKey: "AIzaSyA1S7r-kyTOCLWttcf4kC3Qye0s-gl96Ec",
appId: "1:390108250565:web:9821516ca39ba976358bac",
messagingSenderId: "390108250565",
projectId: "doc-appointment-aa751",
);


if(kIsWeb){

 await Firebase.initializeApp(
   options: firebaseConfig,
 );
}else{
   await Firebase.initializeApp();
} 

【讨论】:

  • 谢谢,这解决了我的问题。可能希望将其添加到顶部:import 'package:flutter/foundation.dart' show kIsWeb;
【解决方案2】:

发生这种情况是因为您初始化的 FirebaseApp 在您重新启动应用时仍然存在。此外,如果您正在初始化默认应用以外的应用,则必须命名 Firebase 应用实例以访问它们。

要解决此问题,您必须捕获在此步骤中引发的错误。做这样的事情:

try {

// you can also assign this app to a FirebaseApp variable
// for example app = await FirebaseApp.initializeApp...

    await Firebase.initializeApp(
      name: 'SecondaryApp',
      options: FirebaseOptions(
        appId: '<appID>',
        apiKey: '<APIKey>',
        messagingSenderId: '<msgSID>',
        projectId: '<projectID>',
        databaseURL: '<dbUrl>/',
      ),
    );
  } on FirebaseException catch (e) {
    if (e.code == 'duplicate-app') {
// you can choose not to do anything here or either 
// In a case where you are assigning the initializer instance to a FirebaseApp variable, // do something like this:
// 
//   app = Firebase.app('SecondaryApp');
//
    } else {
      throw e;
    }
  } catch (e) {
    rethrow;
  }

为了解释这一点,我们捕获了现有同名 FirebaseApp 引发的错误。 这解决了我的问题,希望对你也有帮助。

【讨论】:

    猜你喜欢
    • 2019-07-02
    • 2023-04-03
    • 2023-03-13
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多