Skip to content

学习Flutter Bloc

Published: at 09:09 PMSuggest Changes

Table of contents

Open Table of contents

官网

一个为 Dart 而生,可预测和管理状态的库。https://bloclibrary.dev

为什么要用

将展示层的代码与业务逻辑分开

设计时考虑到了三个核心价值

1. 简单

易于理解,可供技能水平不同的开发人员使用。

2. 强劲

通过将它们组成更小的组件,帮助制作出色而复杂的应用程序。

3. 可测试

轻松测试应用程序的各个方面,以便我们可以自信地进行迭代。

bloc核心思想

流(Streams)

流(Streams)是一系列异步的数据。Dart官方文档

Cubit

learn-flutter-bloc_0.png

Bloc

learn-flutter-bloc_1.png

Cubit vs. Bloc

Cubit 的优势

简单,更容易理解,涉及的代码更少

Bloc 的优势

可追溯性
高级的事件转换

如果仍然不确定要使用哪种,请从 Cubit 开始,然后可以根据需要将其重构或放大为 Bloc

Flutter Bloc的核心理念

Bloc Widgets

BlocBuilder

BlocSelector

BlocProvider

MultiBlocProvider

BlocListener

MultiBlocListener

BlocConsumer

RepositoryProvider

MultiRepositoryProvider

架构

数据层(Data Layer)

Bloc 业务逻辑层 (Business Logic Layer)

表现层(Presentation Layer) UI

命名惯例

事件(Event)

事件应以过去时来命名,因为从bloc的角度来看,事件是已经发生的事情。

命名状态(State)

状态应该是名词,因为状态只是特定时间点的快照。

项目结构参考案例

flutter create --template=package package_name

Previous Post
Dart的构造函数
Next Post
Flutter的序列化和反序列化