flutter_architecture_samples
Flutter的TodoMVC!
Flutter在决定如何组织和架构应用程序方面提供了极大的灵活性。虽然这种自由非常有价值,但它也可能导致应用程序类过大、命名不一致,以及架构不匹配或缺失。这些问题会使测试、维护和扩展应用程序变得困难。
Flutter架构示例项目演示了有助于解决或避免这些常见问题的策略。该项目使用不同的架构概念和工具实现了相同的应用程序。
您可以将此项目中的示例用作学习参考,或作为创建自己应用程序的起点。本项目侧重于演示如何构建代码、设计架构,以及采用这些模式对应用程序的测试和维护所产生的最终影响。您可以通过多种方式使用此处演示的技术来构建应用程序。您自己的特定优先级将影响您如何实现这些项目中的概念,因此您不应将这些示例视为规范示例。为确保重点始终放在上述目标上,该应用程序使用了简单的UI。

当前示例
示例已更新为Dart 2。
- 状态提升(原生)示例 - 使用Flutter开箱即用的工具来管理应用状态。
- InheritedWidget示例 - 使用InheritedWidget将应用状态向下传递到widget层次结构。
- Redux示例 - 使用Redux库来管理应用状态并更新Widgets
- built_redux示例 - 使用built_redux库来强制执行不变性并管理应用状态
- scoped_model示例 - 使用scoped_model库来保存应用状态并通知Widgets更新
- Firestore Redux示例 - 使用Redux库来管理应用状态并更新Widgets,并将Cloud_Firestore添加为Todos数据库。
- MVU示例 - 使用dartea库来管理应用状态并更新Widgets。
- ReduRx示例 - 使用redurx + flutter_redurx库,通过RxDart和StreamBuilder基于Redux存储来处理状态的新方法。
支持代码
- integration_tests - 演示了如何使用Page Object Model编写selenium风格的集成(又称端到端)测试。此测试套件针对所有示例运行。
- todos_repository - 演示了存储库模式和用于处理文件系统的测试策略。用于为示例提供本地存储和模拟Web存储。
为什么是待办事项应用?
本项目中的应用程序旨在足够简单,以便您可以快速理解它,但又足够复杂,能够展示困难的设计决策和测试场景。有关更多信息,请参阅应用程序的规范。
善待彼此
此仓库旨在成为各种架构的讨论平台。让我们激烈地辩论这些想法,但在这个过程中要善待彼此!
虽然欢迎健康的辩论和贡献,但对巨魔则不欢迎。有关详细信息,请阅读行为准则。