Flutter/Dart: Clean Architecture 中功能之间的通信

Flutter/Dart: Communication between features in Clean Architecure

我是 flutter/dart 的新手,我正在尝试使用 Clean Architecture 设计创建一个小应用程序。 在开始编写代码以充分利用它之前,我阅读了 Uncle Bob 的 Clean Architecture 的一些博客和几个演示,现在是时候实现它了。

我想我的应用程序可以分为 3 个主要功能:

我开始按照干净的模式实现 身份验证 功能,也就是说,使用域、数据和表示层,我想我做得很好。它(几乎)经过全面测试(我正在尝试做一些 TDD)并且似乎可以按我想要的方式工作。

问题来了。我想实现 功能。我希望它可以独立于 authentication 但事实并非如此...... 功能需要获得经过身份验证的用户来自 身份验证 功能。我在互联网上搜索了很多,但找不到如何实现具有多个需要共享一些数据的功能的 Clean Architecture。

所以我有两个问题:

提前感谢您的回答。

一个选项是,如果您在用户已经登录后实例化 classes,您可以将该数据作为构造函数参数传入。

更一般地说,Provider 可能是 Flutter 最好的依赖注入工具。如果您 "provide" 对应用程序其余部分的小部件树进行身份验证 class,您可以在其下方的任何位置说 Provider.of(context) 以访问它和任何 public 字段。

希望您在这么长时间后仍在从事 Flutter 项目。

我一直在摆弄Uncle Bob的Clean架构,几个月前我成功地在Flutter中实现了它。

它非常完美,它将您的代码分成组件(如果您来自本机 Android 开发环境,则为模块)并隔离您的数据源,因此如果您想更改制作方式 API 请求例如,你只需要改变你的应用程序中的远程数据源部分,你的所有应用程序都应该按预期工作。

我使用我刚刚上传到 github 的 Clean Architecture 制作了一个测试应用程序,并添加了一个简陋的自述文件来描述应用程序的基本架构和组件,我将致力于编写描述代码的文章很快。

现在您可以从 here

访问存储库

除了您的 3 个功能之外,您还应该添加另一个名为 core 的功能,您可以在该文件夹中添加需要共享的内容。它对我有用。祝你好运

一段时间以来,我一直在努力寻找答案...我的解决方案是在模型中创建一些转换方法 class。例如,我在主页特征文件中有一个 ProductModel(我可以从中将产品添加到购物车),在订单历史特征文件中有一个 ProductInOrderHistoryModel。因此,在 ProductInOrderHistoryModel 文件中,我有一个名为 toProductModel 的方法,它获取 ProductInOrderHistoryModel 的实例并转换为 ProductModel。这样我就可以直接从我的历史订单页面将产品添加到购物车。 这可能不是最好的解决方案,Bom 叔叔会生我的气的。但这是我设法解决问题的方式...