You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter模块用自定义Firebase App时Firestore报错找不到[DEFAULT]应用

自定义Firebase App时FirebaseFirestore仍尝试访问[DEFAULT]应用问题

我正在开发一个Flutter模块,底层会用到部分Firebase工具。由于该模块可能被其他项目复用,我希望创建一个非[DEFAULT]名称的Firebase App。目前初始化操作正常,但FirebaseFirestore仍尝试访问[DEFAULT]应用,抛出异常。

初始化代码

final getIt = GetIt.instance;

void main() {
   WidgetsFlutterBinding.ensureInitialized();
   
   // ...

   await Firebase.initializeApp(name: "module", options: 
   DefaultFirebaseOptions.currentPlatform);

   // ...

   await DI.setupDependencies("module");
}

DI.setupDependencies(...)内部代码

final app = Firebase.app(firebaseAppName);

getIt.registerSingleton(FirebaseStorage.instanceFor(app: app));
getIt.registerSingleton(FirebaseAuth.instanceFor(app: app));
getIt.registerSingleton(FirebaseFirestore.instanceFor(app: app));
// NOTE: 自定义Firebase App名称时不支持
// getIt.registerSingleton(FirebaseAnalytics.instanceFor(app: app));
// getIt.registerSingleton(FirebaseCrashlytics.instance);

final fs = FirebaseFirestore.instanceFor(app: app);
fs.collection("users").id; // 此处抛出异常
getIt<FirebaseFirestore>().collection("users").id; // 同样抛出相同异常

异常栈跟踪

E/flutter ( 8030): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
E/flutter ( 8030): #0      MethodChannelFirebase.app
method_channel_firebase.dart:193
E/flutter ( 8030): #1      Firebase.app
firebase.dart:56
E/flutter ( 8030): #2      FirebaseFirestorePlatform.instance
platform_interface_firestore.dart:41
E/flutter ( 8030): #3      new FirebaseFirestorePlatform.instanceFor
platform_interface_firestore.dart:33
E/flutter ( 8030): #4      FirebaseFirestore._delegate
firestore.dart:50
E/flutter ( 8030): #5      FirebaseFirestore.collection
firestore.dart:71
E/flutter ( 8030): #6      DI.setupDependencies
di.dart:34
E/flutter ( 8030): #7      main

报错位置代码

/// Returns a [FirebaseAppPlatform] by [name].
///
/// Returns the default Firebase app if no [name] is provided and throws a
/// [FirebaseException] if no app with the [name] has been created.
@override
FirebaseAppPlatform app([String name = defaultFirebaseAppName]) {
  if (appInstances.containsKey(name)) {
    return appInstances[name]!;
  }

  throw noAppExists(name);
}

更新:FirebaseStorage功能正常测试

await Firebase.initializeApp(name: "module", options: DefaultFirebaseOptions.currentPlatform);

final fs = FirebaseStorage.instanceFor(app: Firebase.app('module'));
logger.info((await fs.ref('test.png').getDownloadURL()));

内容的提问来源于stack exchange,提问作者Oleg Novosad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:50:10