Flutter 颤振/飞镖:洁净建筑中各特征之间的沟通
我不熟悉flifter/dart,我正在尝试使用干净的体系结构设计创建一个小应用程序。 在开始编写代码以充分利用Bob叔叔的干净体系结构之前,我阅读了一些博客和一些演示文稿,现在是实现它的时候了 我想我的应用程序可以分为三个主要功能:Flutter 颤振/飞镖:洁净建筑中各特征之间的沟通,flutter,design-patterns,dart,clean-architecture,Flutter,Design Patterns,Dart,Clean Architecture,我不熟悉flifter/dart,我正在尝试使用干净的体系结构设计创建一个小应用程序。 在开始编写代码以充分利用Bob叔叔的干净体系结构之前,我阅读了一些博客和一些演示文稿,现在是实现它的时候了 我想我的应用程序可以分为三个主要功能: 认证 课程(获取特定科目的课程/测验) 管理员(管理用户、创建课程等) 我开始按照clean模式实现身份验证功能,也就是说,使用域、数据和表示层,我想我做得相当好。它(几乎)经过了全面测试(我正在尝试做一些TDD),并且似乎按照我的要求工作 现在问题来了。我想
- 认证
- 课程(获取特定科目的课程/测验)
- 管理员(管理用户、创建课程等)
- 如何将数据从一个功能传递到另一个功能?
- 如何在需要来自其他功能的数据的功能中注入依赖项?(我使用get_it作为身份验证功能,并在main()中注入所有依赖项)方法。由于它不需要任何外部数据,因此运行良好。现在似乎不可能对类功能执行相同的操作,因为它首先需要从身份验证功能获取一些数据)
提前感谢您的回答。一个选项是,如果您在用户登录后实例化类,您可以将该数据作为构造函数参数传入
更一般地说,提供者可能是颤振的最佳依赖注入工具。如果您为应用程序的其余部分向小部件树“提供”身份验证类,您可以在其下方的任何位置说Provider.of(context)来访问它和它拥有的任何公共字段 希望在这么长时间之后,您仍在从事颤振项目 我一直在摆弄Bob叔叔的干净架构,几个月前我设法在Flatter中实现了它 它非常完美,它将您的代码分成组件(如果您来自原生Android开发环境,则为模块)并隔离您的数据源,因此,如果您想更改API请求的方式,例如,您只需更改应用程序中的远程数据源部分,您的所有应用程序都应按预期工作 我已经使用刚刚上传到github上的Clean Architecture制作了一个测试应用程序,并添加了一个简单的自述文件,其中描述了应用程序的基本架构和组件,我将很快编写描述代码的书面文章
现在,您可以从访问repo以及您的3个功能。您应该添加另一个名为core的功能,并在该文件夹中添加需要共享的内容。这对我有用。祝你好运一段时间以来,我一直在努力寻找答案。。。我的解决方案是在模型类中创建一些转换方法。例如,我在主功能文件中有一个ProductModel(我可以从中向购物车添加产品),在订单历史功能文件中有一个ProductInOrderHistoryModel。因此,在productInOrderyStoryModel文件中,我有一个名为toProductModel的方法,该方法获取productInOrderyStoryModel的实例并转换为ProductModel。这样我就可以直接从我的历史订单页面向购物车添加产品。
也许这不是最好的解决办法,伯姆叔叔会对我很生气的。但这正是我解决问题的方法……感谢您抽出时间回答我的问题(也很抱歉我反应太晚)。我想没有一个独特的解决方案,您提出的解决方案对我来说非常有效,尽管我仍然发现身份验证和类功能非常耦合。您好,谢谢您的回复。不幸的是,我已经阅读了你的git repo中的所有内容(大部分内容直接来自Reso Coder),我的问题不是如何实现一个独特的功能,而是如何处理多个功能需要共享一些数据的情况。是的,大部分代码来自Reso Coder,我在体系结构中添加了一些基类,如基本本地数据源、基本远程数据源和基本存储库,您能否举例说明您希望如何在多个功能之间共享数据在我写的最初文章中,我描述了这样一个例子。身份验证功能负责将用户登录,但是类功能需要访问它。这就是我正在努力以“干净”的方式抽象的依赖关系(类需要来自身份验证的数据)的链接。因此,对我来说,您试图实现的是,您使用一些功能登录,然后在存储库中处理本地数据源,为他存储用户令牌或一些数据,这可以通过本地数据库或共享首选项实现,然后当您需要进行API调用或检索用户身份验证时,您可以创建另一个功能,即“GetAuthenticatedUser”或者任何处理本地数据源并检索用户数据的方法。如果您提供更精确的示例或代码示例,则会改进此答案