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

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 电影应用程序在您的本地机器上,请遵循以下步骤。
-
克隆存储库: 打开终端并运行以下命令来克隆项目存储库。
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 存储库上创建问题。享受探索和观看这部多功能且功能丰富的应用程序的电影!