Flutter BLoC - Как передать параметр в событие? - PullRequest
0 голосов
/ 04 июля 2019

Пытаясь выучить BLoC, я столкнулся с этой проблемой. У меня есть код, в котором я генерирую несколько кнопок с шаблоном BLoC. Тем не менее, я понятия не имею, как обновить определенные свойства кнопок с помощью метода dispatch(event). Как передать параметры в событие ChangeSomeValues ??

Часть, в которой используется BLoC

BlocBuilder(
  bloc: myBloc,
  builder: (context, state) {
    return ListView.builder(
      itemCount: state.buttonList.length,
      itemBuilder: (context, index) {
        return MyButton(
          label: buttonList[index].label,
          value: buttonList[index].value,
          onPressed: myBloc.dispatch(ChangeSomeValues()),
        );
      }
    );
  }
),

MyBloc.dart

class MyBloc extends Bloc<MyEvent, MyState> {

  @override
  Stream<MyState> mapEventToState(MyEvent event) async* {
    if (event is ChangeSomeValues) {
      ... modify specific parameters in list here ...
      yield MyState1(modifiedList);
    }
  }
}

Я знаю, как использовать события для изменения значений, но я не мог найти, как редактировать определенные параметры в списке с помощью такой общей реализации.

1 Ответ

0 голосов
/ 04 июля 2019

Код для вашего мероприятия:

class ChangeSomeValues extends MyEvent {
  final int data;

  ChangeSomeValues(this.data);
}

отправить как: myBloc.dispatch(ChangeSomeValues(15))

Блок

class MyBloc extends Bloc<MyEvent, MyState> {

  @override
  Stream<MyState> mapEventToState(MyEvent event) async* {
    if (event is ChangeSomeValues) {
      print("here's the data : ${event.data}");
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...