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