Flutter BLoC - 如何将参数传递给事件?

Flutter BLoC - How to pass parameter to event?

我在尝试学习 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);
    }
  }
}

我知道如何使用事件来更改值,但我找不到如何使用这种通用实现来编辑列表中的特定参数。

您的活动代码:

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}");
    }
  }
}