Bloc9
BlocComsumer¶
BlocConsumer 會採用下列參數:
BLoC 類型:指定 BlocConsumer 要監聽的 BLoC 類型。
狀態類型:指定從 BLoC 廣播的狀態類型。
建構函數:用於根據 BLoC 的狀態建構小工具樹。
交易處理常式:當使用者觸發交易時,會執行交易處理常式。
在以下程式碼範例中,根據 BLoC 的狀態建立文字小工具和按鈕小工具。按下按鈕時,會將交易處理常式指定給 BLoC 以執行交易:
Code¶
BlocConsumer<MyBloc, MyState>(
builder: (context, state) {
return Text(state.data);
},
listener: (context, state) {
if (state is ErrorState) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Error'),
),
);
}
},)
可以結合BlocListener去了解
BlocListener與BlocConsumer差別¶
BlocConsumer 和 BlocListener 都是 Flutter Bloc 庫中的組件,用於響應 Bloc 狀態的變化。它們的主要區別在於它們如何響應這些變化。
BlocListener 是一個 Flutter widget,它將在每次 Bloc 狀態變化時調用其 listener 函數。這對於處理只需要響應一次的事件(如導航或 SnackBar)非常有用。BlocListener 不會重建其子 widget。
BlocConsumer 是 BlocBuilder 和 BlocListener 的組合。它將在每次 Bloc 狀態變化時調用其 listener 函數,並且會重建其子 widget。這對於需要根據 Bloc 狀態變化來重建 UI 的情況非常有用。
總的來說,如果你只需要響應狀態變化但不需要重建 UI,則可以使用 BlocListener。如果你需要在狀態變化時響應並重建 UI,則可以使用 BlocConsumer。
Last update :
13 novembre 2024
Created : 13 novembre 2024
Created : 13 novembre 2024