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差別

BlocConsumerBlocListener 都是 Flutter Bloc 庫中的組件,用於響應 Bloc 狀態的變化。它們的主要區別在於它們如何響應這些變化。

BlocListener 是一個 Flutter widget,它將在每次 Bloc 狀態變化時調用其 listener 函數。這對於處理只需要響應一次的事件(如導航或 SnackBar)非常有用。BlocListener 不會重建其子 widget

BlocConsumerBlocBuilderBlocListener 的組合。它將在每次 Bloc 狀態變化時調用其 listener 函數,並且會重建其子 widget。這對於需要根據 Bloc 狀態變化來重建 UI 的情況非常有用。

總的來說,如果你只需要響應狀態變化但不需要重建 UI,則可以使用 BlocListener。如果你需要在狀態變化時響應並重建 UI,則可以使用 BlocConsumer


Last update : 13 novembre 2024
Created : 13 novembre 2024

Comments

Comments