写作提示

A writing prompt application designed to showcase an approach to a "Clean"er architecture in Flutter with Bloc and RxDart, including Unit, Widget and Integration Testing.

项目概览

Writing-Prompt

此应用从 https://ineedaprompt.com API 获取数据并在屏幕上显示。然后用户可以请求新提示,或查看提示历史记录。

项目结构

项目结构如下

|_data
 \__local
 \__remote
|_domain
 \__bloc
 \__managers
 \__mappers
 \__models
|_presentation
 \__styles
 \__ui
 \__utils
 main.dart

数据层

数据存储了 API 和本地数据库信息,这些信息将在应用程序中显示。
所有 API 端点、模型、序列化类和数据库助手都应放在这里。

领域层

此层将数据层连接到表示层,准备从本地数据库或服务器接收的信息,并管理应用程序状态(即,是否需要获取新数据,获取新数据)。

为了与小部件通信,我们使用 BLOC 架构StreamBuilders

表现层

由于 Flutter 没有 Android 中看到的 resources 文件夹,我们需要在一个文件中声明每个资源。因此,我创建了 styles(名称待更改)文件夹,其中包含有关应用程序使用的颜色、字符串和尺寸的信息。

这里是我们应用程序的所有小部件,以及它们通过 bloc 与域层的连接。

main.dart

由于我选择不使用依赖注入框架,我在这里创建了应用程序中要使用的所有类,并由每个小部件继承。

测试

尽管该应用程序并未完全测试,但我努力展示了如何

  • 编写单元测试 来测试类的一个小模块(在本例中是方法)。它们测试了网络层和域层。
  • 小部件测试 来确保 bloc 为小部件提供正确的信息。
  • 集成测试 来测试正常的应用程序使用,并期望在屏幕上显示新提示。

待办事项列表

  • [ ] 创建更多应用动画
  • [ ] 包含更多应用功能,例如分享
  • [ ] 创建更多测试

GitHub

https://github.com/Vanethos/flutter-writting-prompt