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 请求