#flutter #bloc
Вопрос:
Я пытаюсь понять решение блочного заявления. Но я не понимаю, что buildWhen
на самом деле используется для чего. когда значение будет равно true, оно вернет первое утверждение, если условие if. так для чего же buildWhen
используется?
примером может служить:
BlocBuilder<OrdersBloc, OrdersState>(
buildWhen: (context, state) {
return state is OrdersState.OrderCompleted
},
builder: (context, state) {
if (state is OrdersState.OrderCompleted) {
return Container(child: Text('Order Completed!'));
} else if (OrdersState.OrderInProgress) {
return Container(child: Text('In Progress'));
} else if (OrdersState.OrderRequested) {
return Container(child: Text('A customer placed an order!'));
} else {
return Container(child: Text('Waiting for an order'));
}
},
);
Комментарии:
1. вы получили свой ответ?
2. вообще-то, нет. @Яхидулислам
3. Внимательно прочитайте выделенный жирным шрифтом раздел моего ответа?
4. на самом деле, раздел blod-это то, что я знал , я НЕ знал, зачем использовать
buildWhen
, но @JahidulIslam5. На самом деле сборка, когда используется для проверки состояния строителя каждый раз.
Ответ №1:
Для детального контроля над тем, когда функция builder вызывается, может быть предоставлена дополнительная сборка. Построение Когда принимает предыдущее состояние блока и текущее состояние блока и возвращает логическое значение. Если buildWhen возвращает true, конструктор будет вызван с состоянием, и виджет будет перестроен.Если buildWhen возвращает false, конструктор не будет вызываться с состоянием и перестройка не произойдет.
BlocBuilder<BlocA, BlocAState>(
buildWhen: (previousState, state) {
// return true/false to determine whether or not
// to rebuild the widget with state
},
builder: (context, state) {
// return widget here based on BlocA's state
}
)