如何在Flutter Windows桌面应用中连接多个Firebase项目?
如何用firedart连接多个Firebase项目的Firestore?
firedart并没有强制要求只能使用全局单例的Firestore实例,你可以通过直接实例化Firestore对象来同时连接多个Firebase项目。
实现步骤
- 准备好第二个Firebase项目的
projectId(如果需要认证访问,还要准备对应的apiKey) - 为第二个项目单独创建Firestore实例,无需依赖全局的
Firestore.initialize()方法
完整代码示例
import 'package:firedart/firedart.dart'; // 第一个项目配置(原认证和Firestore使用) const firstApiKey = "第一个项目的apiKey"; const firstProjectId = "第一个项目的projectId"; // 第二个项目配置 const secondProjectId = "第二个项目的projectId"; // 若第二个项目需要独立认证,添加对应的apiKey // const secondApiKey = "第二个项目的apiKey"; void main() { // 初始化第一个项目的Auth和默认Firestore单例 FirebaseAuth.initialize(firstApiKey, VolatileStore()); Firestore.initialize(firstProjectId); // 创建第二个项目的Firestore实例 // 如果需要认证,先初始化第二个项目的Auth实例 // var secondAuth = FirebaseAuth(secondApiKey, VolatileStore()); var secondFirestore = Firestore(secondProjectId); // 带认证的实例写法:Firestore(secondProjectId, auth: secondAuth) runApp(const MyApp()); }
使用不同项目的Firestore
- 访问第一个项目的Firestore:继续使用全局单例
Firestore.instance
var firstDocRef = Firestore.instance.collection('test').document('doc');
- 访问第二个项目的Firestore:直接使用刚才创建的
secondFirestore实例
var secondDocRef = secondFirestore.collection('target_collection').document('target_doc');
注意事项
- 如果第二个项目的Firestore需要用户认证,必须为其单独初始化
FirebaseAuth实例,否则请求会被视为未授权(除非该项目的Firestore配置为公开访问) VolatileStore是内存级存储,适合桌面应用的临时会话;如果需要持久化用户认证状态,可以替换为FileStore等本地存储实现
内容的提问来源于stack exchange,提问作者taha khamis
相关产品推荐
相关产品推荐

