space_x_flutter

一个简单的 Flutter 应用程序,用于显示 SpaceX 发射信息,主要为 iOS 和 Android 构建。它展示了一些概念,例如:

  • 原子设计
  • Clean Architecture
  • 存储库模式
  • MVVM
  • 依赖注入
  • 单元测试

功能

该应用程序显示 SpaceX 发射信息,由 4 个主要屏幕组成:

  • 即将发射

    • 此屏幕列出了所有即将发射的火箭。它具有无限滚动列表,如果您单击卡片,您将被重定向到发射详情。还有一个文本框供您按名称或飞行号过滤发射,以及一个按飞行号升序或降序排序的按钮。
  • 发射详情

    • 此屏幕显示以下(如果可用)发射相关详情:发射照片、地点、载荷、乘员和舱信息。
  • 已发射

    • 此屏幕列出了所有已发射的火箭。它具有无限滚动列表,如果您单击卡片,您将被重定向到发射详情。还有一个文本框供您按名称或飞行号过滤发射,以及一个按飞行号升序或降序排序的按钮。
  • 公司详情

    • 此屏幕显示 SpaceX 公司相关信息。

该应用程序还会保存应用程序关闭时的状态,因此使用的过滤器会被保存,如果您在没有互联网的情况下打开它,您仍然可以看到发射信息。

关于实现

我在该应用程序的实现中使用了几个包,但主要的是:

  • freezed -> 用于添加密封联合、不变性和减少样板代码
  • dartz -> 用于为 Dart 添加一些函数式功能,特别是用于 Either 类,我将其与密封联合一起用于错误处理,避免在域层中使用 try catch,并强制处理来自存储库和用例的错误。
  • flutter_bloc -> 用于实现 MVVM 模式,将逻辑从视图中抽象出来。
  • hydrated_bloc -> 与 flutter_bloc 结合使用,在应用关闭时保持 BLoC 的状态
  • http -> 用于 HTTPs 请求

GitHub

查看 Github