我们的应用程序是为 iOS 和 Android 开发的,具有单独的代码库,我们希望开始使用 Flutter 来实现更快速的开发。我们已经在本机代码中使用 Firebase SDK 来实现各种服务,例如身份验证、FCM 和 Firestore。我们开发了一个 Flutter 模块,它基本上使用相同的 Firebase 功能,利用 Firebase Flutter 插件。这对于 Android 来说一切正常,但 iOS 则完全不同。
当我打开应用程序并导航到 Flutter 屏幕时,应用程序崩溃并出现以下异常:
由于未捕获的异常“FIRIllegalStateException”而终止应用程序,原因:“Firestore 实例已启动,且无法再更改其设置。”您只能在调用 Firestore 实例上的任何其他方法之前设置设置。'
事实上,GitHub 上的这个已关闭问题描述了完全相同的问题。维护人员建议仅在 Flutter 中执行所有 Firestore 操作。这给我们带来了一个问题,因为我们已经在本机代码中拥有如此多的功能,并且在我们开始集成第一个 Flutter 屏幕之前可能需要进行大量重构。
所以,我认为我的问题由两部分组成:
看起来 Firebase 和 Firestore 已经在 iOS 本机端创建了一个名为 DEFAULT 的 App 实例,并且当您调用 FirebaseFirestore.instance.collection('users').get(); 时无法重新创建新的 Firestore 实例。
我建议您通过在 Flutter 中初始化 Firebase 来传递名称变量来创建另一个实例,如下所示:
最终应用程序=等待Firebase.initializeApp(名称:“ANOTHER_INSTANCE”);
这应该是一条评论,指向之前的问题接受了这个作为正确答案,但我的代表数还不到 50 次,所以我无法在这里发表评论。