Skip to content

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

Comments

Comments