Flutter – TVMaze Jobsity
Jobsity 招聘流程的应用挑战。
一款使用 TVMaze 网站提供的 API 列出电视连续剧的应用。
您可以在此处找到 API。
应用中当前可用功能列于下方
- 列出 API 中包含的所有连续剧,并使用 API 提供的分页方案。
- 用户可以通过名称搜索连续剧。
- 点击连续剧后,应用显示该连续剧的详细信息。
- 点击剧集后,应用显示剧集信息。
- 用户可以收藏连续剧。
- 用户可以从收藏列表中删除连续剧。
- 用户可以按字母顺序浏览收藏的连续剧,并点击查看详情。
应用概览
| 显示详情 | 剧集详情 |
|---|---|
![]() |
![]() |
| 按名称搜索剧集 | 收藏列表 |
|---|---|
![]() |
![]() |
| 按名称搜索人物 | 人物详情 |
|---|---|
![]() |
![]() |
如何运行此项目
如果您这是您的第一个 Flutter 项目,这里有一些入门资源
有关 Flutter 入门方面的帮助,以上链接提供了教程、示例、移动开发指南和完整的 API 参考。
FVM
该项目使用 FVM (Flutter 版本管理)。
- FVM 文档可在此处获取。
运行项目的命令
-
检查您正在使用的 → Flutter 版本:2.10.3
-
要运行项目并使用您机器上安装的 Flutter 全局 SDK,请转到
.vscode/settings.json并注释掉所有内容。这将删除 VSCode 中负责优先使用 FVM 安装的 Flutter SDK 的配置,因此将使用您机器上安装的 SDK。 -
否则,如果您想使用 FVM,请按照文档中的说明进行操作。
-
命令
flutter pub get
flutter run
项目结构概述
Gitflow
我使用 Gitflow 作为分支管理策略。
项目结构非常简单。主要文件夹是 assets、lib 和 test 文件夹。lib 文件夹是我们编写所有代码的地方,assets 文件夹是我们放置图像、图标和其他相关文件的地方。
架构概述
应用中使用的主要架构概念是Clean Architecture。一种多层架构,可促进单元测试并帮助我们分离职责。此架构的另一个目标是促进应用的可扩展性以及新功能的集成。
各层功能将在以下各节中描述。
依赖注入
该项目使用 _get_it_ 包来简化依赖注入的组织。控制由注入容器进行。
设计模式
该项目使用了一些设计模式,例如
- 单例和工厂 – 创建型模式
- 适配器和装饰器 – 结构型模式
- 策略 – 行为型模式
SOLID 原则
项目中存在的其他良好实践是用于更具描述性命名法的 Clean Code 和 SOLID 原则。
领域层
这里是我们实体和用例的所在地。这是我们架构的核心,实体定义了我们系统的对象,用例是应用程序应执行的操作。
数据层
在此层中,我们实现了我们的用例,并创建了我们的模型或DTO(数据传输对象)来将外部数据转换为我们的实体。我们还提供了定义我们应如何实现http 或缓存适配器的接口。
基础设施层
在基础设施层,我们有服务实现。它是负责创建我们系统与外部依赖之间解耦点的层。
表示层
我们的表示层包含视图的控制器。控制器或表示器负责表示逻辑。
UI 层
UI 层是我们屏幕和视觉组件所在的地方。在 Flutter 中,这里就是我们拥有小部件的地方。
架构图如下
异常结构概述
异常架构被设计为遵循干净架构原则,我们将异常视为替代系统流程。异常结构图如下








