type
status
date
slug
summary
tags
category
icon
password
这个宇宙中的每个开发人员都编写代码,但当有人说这个开发人员编写干净的代码时,这听起来真的很不错。由于 Flutter 框架只有 Dart 语言来编写 UI 代码和业务逻辑,所以当 UI 代码和业务逻辑混合在一起时,一切都变得混乱。
<ins/>
问题: 我们如何阻止我们的代码变得混乱?
注意:我们已经在使用 Clean Architecture 来分离关注点,但这种情况有所不同
答: 我们的 Bloc 库出现了,但我们将使用其更轻量级的 Cubit 版本,它删除了一堆样板代码,Cubit 不需要任何类型的包来添加,但它附带了 6.0.0 或更高版本的包flutter_bloc。
不知道什么是 Bloc?
Bloc 是众所周知的成熟 Flutter 状态管理库,它促进了不变性,并拥有围绕它构建的支持包和文档的最佳生态系统之一。
不知道什么是 Cubit?
Cubit 是轻量级状态管理解决方案。它是 bloc 包的子集,不依赖于事件,而是使用方法发出新状态。每个 Cubit 都需要一个初始状态,该状态将是 Cubit 在调用 emit 之前的状态。
Bloc
如果您过去使用过 bloc,您可能对这张图很熟悉。
这种 Bloc 架构不言自明。让我们理解一下,在 Bloc 中,我们有 Events and States 和 Bloc 本身。
· Event:事件告诉 bloc 做某事,触发按钮点击,方法调用等。
· State:状态表示任何小部件要处理的信息,初始、加载、加载和失败状态等。
· Bloc: 所有业务逻辑都发生在 Bloc 内部,它接受事件,执行逻辑和输出状态。
一般来说:我们有事件(点击、触发、调用)和状态(初始、加载、加载等)。Bloc 接受事件执行逻辑并输出特定状态。
Cubit
如果您以前使用过 cubit,您可能对这张图很熟悉。
这种 Cubit 架构也是不言自明的。让我们理解一下,在 cubit 中,我们有 States 和 Cubit 本身。
- State: 状态表示任何小部件要处理的信息,初始、加载、加载和失败状态等。
- Cubit:Cubit 公开直接函数并输出适当的状态。
一般来说:我们有 State(Initial、Loading、Loaded 和 Failure),Cubit 直接获取函数并发出适当的 state。
创建目录:
Go to > presentation > cubit,并创建 3 个目录:user、credential 和 auth。现在,在它们中创建一个具有特定名称的 cubit 类。
如果您使用的是 Android Studio,请安装 Bloc.
Go to File > Settings > Plugins > Market Place 安装 Bloc
如果您使用的是 VS Code,请安装和扩展 Bloc.
创建 Cubit 类后,您的目录将如下所示:
<ins/>
Auth Cubit:
auth_state.dart
auth_cubit.dart
Credential Cubit
credential_state.dart
credential_cubit.dart
User Cubit
user_state.dart
user_cubit.dart
结论
我们已经成功地为 User 创建了 Cubits,在下一篇文章中,我们将探讨依赖注入,并将调用这些方法。