Flutter Clean Architecture 实践(8)

OldBird

实用Tips|2024-12-16|最后更新: 2024-12-19|
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,您可能对这张图很熟悉。
 
notion image
 
这种 Bloc 架构不言自明。让我们理解一下,在 Bloc 中,我们有 Events and States 和 Bloc 本身。
 
· Event:事件告诉 bloc 做某事,触发按钮点击,方法调用等。
· State:状态表示任何小部件要处理的信息,初始、加载、加载和失败状态等。
· Bloc: 所有业务逻辑都发生在 Bloc 内部,它接受事件,执行逻辑和输出状态。
 
一般来说:我们有事件(点击、触发、调用)和状态(初始、加载、加载等)。Bloc 接受事件执行逻辑并输出特定状态。
 

Cubit

 
如果您以前使用过 cubit,您可能对这张图很熟悉。
 
notion image
 
这种 Cubit 架构也是不言自明的。让我们理解一下,在 cubit 中,我们有 States 和 Cubit 本身。
 
  • State: 状态表示任何小部件要处理的信息,初始、加载、加载和失败状态等。
  • Cubit:Cubit 公开直接函数并输出适当的状态。
 
一般来说:我们有 State(Initial、Loading、Loaded 和 Failure),Cubit 直接获取函数并发出适当的 state。
 
创建目录:
 
Go to > presentation > cubit,并创建 3 个目录:usercredential 和 auth。现在,在它们中创建一个具有特定名称的 cubit 类。
 
notion image
 
如果您使用的是 Android Studio,请安装 Bloc.
 
Go to File > Settings > Plugins > Market Place 安装 Bloc
 
如果您使用的是 VS Code,请安装和扩展 Bloc.
创建 Cubit 类后,您的目录将如下所示:
 
notion image
 
 
<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,在下一篇文章中,我们将探讨依赖注入,并将调用这些方法。
 
 
Loading...