【问题标题】: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 注册它,之后它将直接返回该实例。

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2012-03-21
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多