Cubit 一個更簡易的 Flutter 狀態管理

BoShi Lee 
Flutter Taipei
3 min readJul 29, 2020

--

有在關注 Flutter 的人應該都聽過 Bloc, Provider 等的狀態管理,在 Bloc 5.0 更新過後多了 Cubit ,當初剛更新的時候還尚未使用,直到近期有新專案開啟,讓我認識這個輕量級狀態管理,又兼容 Bloc ,真的讓 Code 又更少了呢😂

Cubit is a lightweight state management solution. It is a subset of the bloc package that does not rely on events and instead uses methods to emit new states.

在 Flutter 我們有很多種可以做 Widget 的狀態管理,讓我們的 Code 更有條理,今天我們介紹 Cubit 是 Bloc 下的一個子集合,可以無痛的將 Cubit 接上原本的 Bloc Widget tree 下。

先來看看官方 Github 的範例:

class CounterCubit extends Cubit<int> {
CounterCubit() : super(0);

void increment() => emit(state + 1);
void decrement() => emit(state - 1);
}

上面的範例將 Cubit 的改變都列在上面,Cubit 省去了原本 Bloc 使用 Event 來觸發,轉而使用 function 並直接發出一個狀態訊號,讓 Widget 可直接使用 Cubit 的 function 來做狀態的切換。

在 BlocProvider 下使用 Cubit:

Cubit 使用起來很簡單,在我使用 Cubit 的版本時已經可跟原本的 BlocProvider 直接相容:

使用 Cubit 作為 Widget:

如下列 Code ,只要在原本的 BlocBuilder 用上 Cubit 即可使用,BlocListener 也是如此:

Cubit 的簡易介紹到這裡,若還有興趣的同學可以到下面的官方教學去學習喔~

--

--