FilmKu: 干净的 Flutter 电影应用架构

Flutter Movie Application

观看视频演示

FilmKu 是一款开源的 Flutter 电影应用程序,它体现了干净架构原则,并利用 Riverpod 和 Bloc 进行状态管理。该应用使用 TMDB API 来为用户提供沉浸式的电影发现体验。通过 get_it 驱动的依赖注入、dio 管理的远程 API 调用以及 Isar 实现的本地数据存储,FilmKu 为电影爱好者提供了一个全面的解决方案。

跳转到下面的“入门”部分,在您的本地机器上设置应用程序。

功能

  • 浏览电影: 深入了解按流行度和评分分类的庞大电影收藏。

  • 无限滚动: 享受无缝且无尽的电影浏览,并加入了无限滚动功能。

  • 电影详情: 获取每部电影的全面信息,包括上映日期、评分、演员阵容等。

  • 收藏: 将电影标记为收藏,以便快速访问和参考。

  • 响应式设计: FilmKu 的界面通过 flutter_screenutil 实现,可无缝适应各种设备和屏幕尺寸。

  • 离线访问: 即使没有活动的互联网连接,也能访问最近观看的电影。

  • 加载动画: 在应用获取数据时,通过 flutter_shimmer 体验流畅的加载动画。

使用的架构和库

Flutter 电影应用程序采用了多种架构原则和库来增强开发和可维护性。

Clean Architecture

该项目遵循干净架构原则,将代码划分为不同的层。

  • 数据层: 包含数据源和存储库实现,清晰地分离了数据检索方法。

  • 领域层: 领域层包括抽象存储库和用例,代表了应用程序的核心业务逻辑。

  • 表示层: 在这里,您会找到状态管理(Bloc 和 Riverpod)实现、屏幕和负责渲染用户界面的小部件。

状态管理

该项目有两个分支,每个分支都展示了不同的状态管理方法。

  • Master 分支: 使用 Riverpod 状态管理库进行可预测且高效的状态管理。

  • Bloc 分支: 实现 Bloc 状态管理库,提供了另一种状态管理技术的视角。

依赖注入

get_it 用于依赖注入,确保应用程序是解耦和模块化的。

网络

Dio 用于促进远程 API 调用,提高了数据检索的效率。

本地数据库

Isar 用于本地数据库存储,实现了对先前观看电影的无缝离线访问。

函数式编程

集成了 Dartz 库以引入函数式编程概念,从而产生了更可预测和更具表现力的代码。

代码生成

Freezed 用于代码生成,简化了数据类的创建,减少了样板代码。

其他库

  • flutter_svg 用于加载 SVG 图像。
  • flutter_screenutil 用于响应式屏幕设计。
  • equatable 用于高效的类比较。
  • go_router 用于处理应用程序路由。
  • shimmer 用于流畅的加载动画。
  • cached_network_image 用于图像缓存。
  • flutter_dotenv 用于管理环境变量。

入门

要设置 FilmKu Flutter 电影应用程序在您的本地机器上,请遵循以下步骤。

  1. 克隆存储库: 打开终端并运行以下命令来克隆项目存储库。

    git clone https://github.com/Iamzaryab/Movie-Application-Flutter-Clean-Architecture.git
  2. 在项目根目录下创建一个 .env 文件。添加以下行,将 ADD YOUR API KEY 替换为您的实际 API 密钥。您可以从此处生成您的 API 密钥。

    BASEURL=https://api.themoviedb.org/3/
    APIKEY=ADD YOUR API KEY
    
  3. 选择状态管理方法。

  • 对于 Riverpod 实现,请留在 master 分支。
  • 对于 Bloc 实现,请使用以下命令切换到 bloc 分支。
    git checkout bloc
  1. 安装项目依赖项
    flutter get pub
  2. 使用 build_runner 生成必要的代码。
    flutter pub run build_runner build --delete-conflicting-outputs

现在您可以探索 FilmKu Flutter 电影应用程序了!根据您选择的状态管理分支,您可以深入研究 Riverpod 或 Bloc 的实现。如有任何问题或疑问,请参考文档或向项目社区寻求帮助。

随意探索 README 中概述的各种功能。

贡献

欢迎贡献!如果您想为 Flutter 电影应用程序做出贡献,只需按照以下步骤操作。

  1. Fork该存储库。
  2. 为您的功能或错误修复创建新分支:git checkout -b feature/your-feature-namebugfix/issue-number
  3. 进行更改并提交: git commit -m 'Add some feature'
  4. 将您的更改推送到分支:git push origin feature/your-feature-name
  5. 向原始存储库的 master 分支打开一个拉取请求。

您的贡献有助于改进 FilmKu Flutter 电影应用程序。随时提出新功能、改进现有功能或修复错误。一起,我们可以让 FilmKu 变得更好!

许可证

本项目根据 MIT 许可证授权。

致谢

  • The Movies Database API 提供为该应用程序提供动力的电影数据。

通过 Flutter 电影应用程序体验电影世界!如果您遇到问题或有建议,请随时在 GitHub 存储库上创建问题。享受探索和观看这部多功能且功能丰富的应用程序的电影!

GitHub

查看 Github