如何覆盖我的主要 pubspec 依赖项白色标记 flutter 应用程序

问题描述

我有一个项目,我必须卖给其他客户,所以我想找到一种方法来统一代码,当我发布一些更新时,我只需要操作一个代码(当然,保持特殊性从每一个

问题是在我的第一个应用程序中,我使用了 firebase_messaging 及其 google-services.json。但是在这个新客户端中我不会使用它......我尝试运行并抛出此错误

E/Flutter ( 7850): [ERROR:Flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: [core/not-initialized] Firebase has not been correctly initialized. Have you added the "google-services.json" file to the project? 
E/Flutter ( 7850):     
E/Flutter ( 7850):     View the Android Installation documentation for more information: https://firebase.Flutter.dev/docs/installation/android
E/Flutter ( 7850):     
E/Flutter ( 7850): #0      MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:86:9)
E/Flutter ( 7850): <asynchronous suspension>
E/Flutter ( 7850): #1      Firebase.initializeApp (package:firebase_core/src/firebase.dart:44:9)
E/Flutter ( 7850): <asynchronous suspension>
E/Flutter ( 7850): #2      main (package:app_md/main.dart:72:3)
E/Flutter ( 7850): <asynchronous suspension>
E/Flutter ( 7850): 

如何处理不会使用 firebase_messaging 的子项目:?我正在使用 'config' 参数来做这个遗产

我是这样用的:https://medium.com/@ramiechaarani/how-to-make-a-white-label-app-in-flutter-6c3ea40fd7d5

总而言之:

我有一个主要的应用程序,最初我是为一个客户做的。此客户端使用 Firebase。现在我只想保留主要功能并将其分开以在另一个客户端中使用。问题是,这个新客户端不使用 firebase,所以当我尝试运行该应用程序时,它会抛出该错误,因为我没有 google-services.json。我怎么能说在这个项目(继承主项目)中我不会使用 firebase?

预期结果:在第二个品牌应用中不要使用 firebase..

也许有一种方法可以覆盖依赖项?或者有另一种方法来实现我的目标..

解决方法

  1. 提取一个通用模块,仅包含具有通用方法的客户端接口
  2. 将实现添加到客户的模块中(或创建每个模块 实现,取决于多个客户端是否要使用 相同的实现)
  3. 在您的“核心”(白标)模块的入口点中,将步骤 1 中的接口添加为参数
  4. 在客户端的模块中,将实现作为参数传递给入口点

这基本上就是 Separation of conerns 的内容。您的 BLOC(或您用来执行业务逻辑的任何东西)不需要知道“东西”来自哪里。他们只关心“东西”来了。

为了更好地理解 SoC,您可能需要阅读比维基百科文章更轻松的内容,例如:How do you explain Separation of Concerns to others?