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 作为分支管理策略。

项目结构非常简单。主要文件夹assetslibtest 文件夹。lib 文件夹是我们编写所有代码的地方,assets 文件夹是我们放置图像、图标和其他相关文件的地方。

project-structure


架构概述

应用中使用的主要架构概念是Clean Architecture。一种多层架构,可促进单元测试并帮助我们分离职责。此架构的另一个目标是促进应用的可扩展性以及新功能的集成。

各层功能将在以下各节中描述。

依赖注入

该项目使用 _get_it_ 包来简化依赖注入的组织。控制由注入容器进行。

设计模式

该项目使用了一些设计模式,例如

  • 单例和工厂 – 创建型模式
  • 适配器和装饰器 – 结构型模式
  • 策略 – 行为型模式

SOLID 原则

项目中存在的其他良好实践是用于更具描述性命名法的 Clean Code 和 SOLID 原则。

领域层

这里是我们实体用例的所在地。这是我们架构的核心,实体定义了我们系统的对象,用例是应用程序应执行的操作。

数据层

在此层中,我们实现了我们的用例,并创建了我们的模型DTO(数据传输对象)来将外部数据转换为我们的实体。我们还提供了定义我们应如何实现http 或缓存适配器的接口。

基础设施层

在基础设施层,我们有服务实现。它是负责创建我们系统与外部依赖之间解耦点的层。

表示层

我们的表示层包含视图的控制器。控制器表示器负责表示逻辑

UI 层

UI 层是我们屏幕视觉组件所在的地方。在 Flutter 中,这里就是我们拥有小部件的地方。

架构图如下

architecture-diagram


异常结构概述

异常架构被设计为遵循干净架构原则,我们将异常视为替代系统流程。异常结构图如下

exception-diagram


GitHub

查看 Github