Cubit 一個更簡易的 Flutter 狀態管理
有在關注 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 的簡易介紹到這裡,若還有興趣的同學可以到下面的官方教學去學習喔~