【问题标题】:Should I inject Firebase instances?我应该注入 Firebase 实例吗?
【发布时间】:2022-11-28 08:13:19
【问题描述】:
我将 firebase 分析添加到我的项目中,并且在每个用例中都使用了分析。所以在每个文件中,我需要创建一个 firebase 分析实例。喜欢
FirebaseAnalytics analytics = FirebaseAnalytics.instance;。
所以我在想如果我使用 getIt 并在我需要的任何地方注入实例会怎样,在这种情况下只会创建一个实例。喜欢 getIt.registerSingleton(FirebaseAnalytics.instance);
什么是击球手?
【问题讨论】:
标签:
flutter
firebase
flutter-dependencies
analytics
【解决方案1】:
不需要使用依赖管理器包来注入它们,Firebase 服务的 instance getter 是这样实现的:
/// Returns an instance using the default [FirebaseApp].
static FirebaseAuth get instance {
FirebaseApp defaultAppInstance = Firebase.app();
return FirebaseAuth.instanceFor(app: defaultAppInstance);
}
/// Returns an instance using a specified [FirebaseApp].
/// Note that persistence can only be used on Web and is not supported on other platforms.
factory FirebaseAuth.instanceFor(
{required FirebaseApp app, Persistence? persistence}) {
return _firebaseAuthInstances.putIfAbsent(app.name, () {
return FirebaseAuth._(app: app, persistence: persistence);
});
}
因此在整个应用程序中调用多个instance getter 不会每次都注册它,它只会在第一次使用putIfAbsent 注册它,之后它将直接返回该实例。