FilmKu: 电影应用,采用简洁架构的Flutter

Flutter Movie Application

观看视频演示

FilmKu 是一款开源的 Flutter 电影应用程序,它体现了简洁架构的原则,并利用了 RiverpodBloc 的强大功能进行状态管理。该应用利用 Movies Database 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