如何在 Flutter 应用程序中使用 Clean Architecture 处理全局事务?

How to handle global things with Clean Architecture in Flutter apps?

我已经完成了 Reso Coder 教程在 Flutter 应用程序中使用 TDD 清洁架构。但有两点对我来说很有趣:

  1. 如果我们有像 LoadingFailureEmpty Case 等全局小部件,在哪一层以及我们如何存储它们以便从任何层访问特征?可以在 core 文件夹中创建像 widgets 这样的文件夹来存储这些小部件吗?

  2. 如果我们在不同的页面、不同的功能中有相同的 API 调用或相同的本地数据,我们如何存储它们?是否可以创建本身没有视图的独立功能,仅包含其他功能的 domaindata 层?

这是我的存储库: https://github.com/thisisyusub/tdd-learn-example

通过检查您的存储库,我猜您是在谈论您的 FailureWidgetLoadingWidget,而“全局小部件”是指在您的应用程序的多个功能中使用的小部件。现在回答你的问题:

在我看来,您绝对可以将在多个功能中共享的小部件放在 core/ 文件夹中,但我建议您与不同的层保持某种连贯性。我的意思是小部件应该放在 presentation 子文件夹中,因为只有您的表示层应该依赖于它们。

lib/
  |- core/
  |  |- presentation/
  |  |  |- loading_widget.dart
  |  |  |- failure_widget.dart

对于要在多个功能中重复使用的 API 调用也是如此,您可以将它们放在 core/.

data/ 子文件夹中
lib/
  |- core/
  |  |- data/
  |  |- data_sources/