Simple News App – Flutter Clean Architecture with BLOC, Freezed, Get_It Package

此存储库包含一个使用Flutter构建的简单新闻应用程序,遵循Clean Architecture原则,并利用了BLOC模式以及Freezed和Get_It包。

描述

Simple News App是一款移动应用程序,可显示从API获取的新闻文章。它演示了Flutter中Clean Architecture的实现,将应用程序划分为具有清晰职责的层。该架构易于测试、维护和扩展。

该应用程序使用BLOC(业务逻辑组件)模式来管理应用程序的状态。BLOC将业务逻辑与UI分离,使代码更具模块化和可测试性。它还利用Freezed包为状态管理和数据模型生成不可变类。Get_It包用于依赖注入,从而更容易管理应用程序不同层之间的依赖关系。

功能

  • 显示从API获取的新闻文章列表。
  • 带备用和加载占位符的缓存缩略图

屏幕截图

安装

  1. 克隆仓库

    git clone https://github.com/mimamch/news_app_clean_architecture
  2. 切换到项目目录

    cd news_app_clean_architecture
  3. 安装依赖项

    flutter pub get
  4. 运行应用

    flutter run

结构

该应用程序遵循Clean Architecture原则,结构如下:

  • lib/
    • core/:包含整个应用程序使用的核心实用程序
    • features/:
      • app:初始化应用程序并设置依赖项注入。
      • {features_a}:
        • data/:包含负责处理数据获取和缓存的数据层。
        • domain/:定义应用程序的核心业务逻辑和实体。
        • presentation/:包含应用程序的UI层,包括BLOC、视图和组件。
    • main.dart:应用程序的入口点。

依赖项

该应用程序使用了几个Flutter包

  • flutter_bloc:为状态管理实现BLOC模式。
  • freezed:为状态管理和数据模型生成不可变类。
  • json_annotation:提供JSON序列化的注解。
  • json_serializable:根据注解生成JSON序列化代码。
  • get_it:提供依赖注入功能。
  • dio:处理HTTP请求以获取新闻文章。
  • equatable:简化状态管理的相等比较。

有关依赖项的完整列表,请参阅pubspec.yaml文件。

贡献

欢迎为Simple News App贡献!如果您发现任何错误或想提出改进建议,请打开一个问题或提交一个拉取请求。

贡献时,请遵循现有代码风格,并确保在提交任何更改之前所有测试都通过。此外,请确保在必要时更新文档。

许可证

本项目采用MIT许可证。您可以根据需要自由使用和修改代码。

GitHub

查看 Github