我如何覆盖我的主要 pubspec 依赖项(白色标签 flutter 应用程序)
How can I override my main pubspec dependencies (white labelling a flutter app)
我有一个项目必须卖给其他客户,所以我想找到一种方法来统一代码,当我发布一些更新时,我只需要操作一个代码(当然,保持每一个的特殊性)
问题是在我的第一个应用程序中,我使用了 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' 参数来执行此 heritage
我是这样用的:https://medium.com/@ramiechaarani/how-to-make-a-white-label-app-in-flutter-6c3ea40fd7d5
总计:
我有一个主要的应用程序,最初是我为一个客户做的。此客户端使用 firebase。现在我只想保留主要功能并将其分开以在另一个客户端中使用。问题是,这个新客户端不使用 firebase,所以当我尝试 运行 应用程序时它会抛出该错误,因为我没有 google-services.json。我怎么能说在这个项目(继承主项目)中我不会使用firebase?
预期结果:在第二品牌应用中不使用 firebase..
也许有一种方法可以覆盖依赖关系?或者有另一种方法可以实现我的目标..
- 提取一个仅包含具有通用方法的客户端接口的通用模块
- 将实现添加到客户的模块(或创建模块
实现,取决于多个客户端是否要使用
相同的实现)
- 在您的 'core'(白标)模块的入口点添加第 1 步中的接口作为参数
- 在客户端模块中,将实现作为参数传递给入口点
这就是 Separation of conerns
的本质。您的 BLOC(或您用来执行业务逻辑的任何东西)不需要知道 'stuff' 来自哪里。他们只关心 'stuff' 来了。
为了更好地理解SoC,您可能希望阅读比维基百科文章更轻松的内容,例如:How do you explain Separation of Concerns to others?
我有一个项目必须卖给其他客户,所以我想找到一种方法来统一代码,当我发布一些更新时,我只需要操作一个代码(当然,保持每一个的特殊性)
问题是在我的第一个应用程序中,我使用了 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' 参数来执行此 heritage
我是这样用的:https://medium.com/@ramiechaarani/how-to-make-a-white-label-app-in-flutter-6c3ea40fd7d5
总计:
我有一个主要的应用程序,最初是我为一个客户做的。此客户端使用 firebase。现在我只想保留主要功能并将其分开以在另一个客户端中使用。问题是,这个新客户端不使用 firebase,所以当我尝试 运行 应用程序时它会抛出该错误,因为我没有 google-services.json。我怎么能说在这个项目(继承主项目)中我不会使用firebase?
预期结果:在第二品牌应用中不使用 firebase..
也许有一种方法可以覆盖依赖关系?或者有另一种方法可以实现我的目标..
- 提取一个仅包含具有通用方法的客户端接口的通用模块
- 将实现添加到客户的模块(或创建模块 实现,取决于多个客户端是否要使用 相同的实现)
- 在您的 'core'(白标)模块的入口点添加第 1 步中的接口作为参数
- 在客户端模块中,将实现作为参数传递给入口点
这就是 Separation of conerns
的本质。您的 BLOC(或您用来执行业务逻辑的任何东西)不需要知道 'stuff' 来自哪里。他们只关心 'stuff' 来了。
为了更好地理解SoC,您可能希望阅读比维基百科文章更轻松的内容,例如:How do you explain Separation of Concerns to others?