在 Flutter 模块和原生 iOS 中使用 Firestore

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

我们有一个原生 iOS 应用程序,我们正在将其逐步迁移到 Flutter,因为目前在 Flutter 中重写整个应用程序还不可行。我们严重依赖 Firebase 资源,例如 auth、Firestore 等,我们需要在原生代码和 Flutter 代码中使用它们。

我们能够在 Flutter 中初始化 Firebase 实例:

final app = await Firebase.initializeApp();

以及从 Firebase auth 获取通过本机代码进行身份验证的当前用户:

final userId = FirebaseAuth.instance.currentUser?.uid;

但是,我们无法访问 Firestore:

final users = await FirebaseFirestore.instance.collection('users').get();

每当我们尝试这样做时,都会收到错误:

由于未捕获的异常“FIRIllegalStateException”而终止应用程序,原因:“Firestore 实例已启动,且无法再更改其设置。”您只能在调用 Firestore 实例上的任何其他方法之前设置设置。'

似乎

FLTFirebaseFirestorePlugin
正在尝试重新定义当前Firestore实例的设置:

FIRFirestore *firestore = [FIRFirestore firestoreForApp:app database:databaseUrl];
firestore.settings = settings;

我们尝试了很多方法,但无法克服这个错误。

有人能够在 Flutter 模块原生 iOS 中使用 Firestore 吗?

或者有什么可以应用的解决方法吗?


在这里发现完全相同的问题,但没有响应:在原生 iOS 和 Flutter 中初始化并使用 Firestore

此 GH 票证中还报告了:https://github.com/firebase/flutterfire/issues/9582

ios flutter firebase google-cloud-firestore
1个回答
0
投票

看起来 Firebase 和 Firestore 已经在 iOS 原生端创建了一个名为

DEFAULT
的 App 实例,并且当您调用
FirebaseFirestore.instance.collection('users').get();

时无法重新创建新的 Firestore 实例

我建议您通过在 Flutter 中初始化 Firebase 来传递

name
变量来创建 Flutter 中的另一个实例,如下所示:

final app = await Firebase.initializeApp(name: "ANOTHER_INSTANCE");

© www.soinside.com 2019 - 2024. All rights reserved.