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

FilmKu 是一款开源的 Flutter 电影应用程序,它体现了简洁架构的原则,并利用了 Riverpod 和 Bloc 的强大功能进行状态管理。该应用利用 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 电影应用程序在您的本地计算机上,请遵循以下步骤:
-
克隆仓库:打开终端并运行以下命令来克隆项目仓库。
git clone https://github.com/Iamzaryab/Movie-Application-Flutter-Clean-Architecture.git
-
在项目根目录下创建一个
.env文件。添加以下行,将ADD YOUR API KEY替换为您实际的 API 密钥。您可以从 此处 生成您的 API 密钥。BASEURL=https://api.themoviedb.org/3/ APIKEY=ADD YOUR API KEY -
选择状态管理方法
- 对于 Riverpod 实现,请保留在
master分支上。 - 对于 Bloc 实现,请使用以下命令切换到
bloc分支。git checkout bloc
- 安装项目依赖项
flutter get pub
- 使用
build_runner生成必要的代码。flutter pub run build_runner build --delete-conflicting-outputs
现在您已准备好探索 FilmKu Flutter 电影应用程序!根据您选择的状态管理分支,您可以深入研究 Riverpod 或 Bloc 实现。如有任何疑问或问题,请参阅文档或寻求项目社区的帮助。
随意探索 README 中概述的各种功能和用途。
贡献
欢迎贡献!如果您想为 Flutter 电影应用程序做出贡献,只需遵循以下步骤:
- Fork该存储库。
- 为您的功能或错误修复创建一个新分支:
git checkout -b feature/your-feature-name或bugfix/issue-number。 - 进行更改并提交:
git commit -m 'Add some feature'。 - 将您的更改推送到分支:
git push origin feature/your-feature-name。 - 针对原始仓库的
master分支打开一个拉取请求。
您的贡献有助于改进 FilmKu Flutter 电影应用程序。请随时提出新功能、改进现有功能或修复错误。一起,我们可以让 FilmKu 变得更好!
许可证
本项目根据 MIT 许可证 授权。
致谢
- The Movies Database API 提供支持该应用程序的电影数据。
通过 Flutter 电影应用程序体验电影世界!如果您遇到问题或有建议,请随时在 GitHub 仓库中创建问题。享受探索和观看这部多功能且功能丰富的应用程序!