如何修改当前的 bloc 状态,如添加、更新和删除?
How to modify current bloc state like adding, updating, and deleting?
我有两个屏幕,第一个屏幕是显示项目列表。第二个是用于创建新项目的表单。在服务器端,在每个 store, update, destroy
动作之后,我 returns 将其值返回给客户端作为响应。这里的目标是更新状态,而无需通过网络发出新请求,并且每次用户创建新资源并返回包含列表的屏幕时都一遍又一遍地显示加载屏幕。
但由于 BlocBuilder
仅取决于特定事件并且 state.data
仅在 if (event is NameOfEvent)
语句内可用,因此我无法修改当前状态以推送新的它的价值。
我发现将 BlocListener
与 InitState
和 setState
结合使用在某种程度上是可行的,但我认为这使得 state.data
在 [=12= 中毫无用处] 也使算法对于这么小的任务变得复杂。
有没有更简单的方法来实现这个条件?
child: BlocBuilder<EducationBloc, EducationState>(
builder: (context, state) {
if (state is EducationLoaded) {
return ListEducationData(educations: state.data);
}
if (state is EducationCreated) {
final education = state.data;
// i want to push [education] to <ListEducationData>
}
...
...
创建列表来存储数据并使用 BlocListener 这样您就不需要在每次状态更改时都更改 ui。
var _listEducations = List<EducationData>();
child : BlocListener<EducationBloc,EducationState>(
listener: (_,state){
if (state is EducationLoaded) {
setState(() { //update _listEducations
_listEducations.addAll(state.data);
});
}
},
child : Container()
)
我有两个屏幕,第一个屏幕是显示项目列表。第二个是用于创建新项目的表单。在服务器端,在每个 store, update, destroy
动作之后,我 returns 将其值返回给客户端作为响应。这里的目标是更新状态,而无需通过网络发出新请求,并且每次用户创建新资源并返回包含列表的屏幕时都一遍又一遍地显示加载屏幕。
但由于 BlocBuilder
仅取决于特定事件并且 state.data
仅在 if (event is NameOfEvent)
语句内可用,因此我无法修改当前状态以推送新的它的价值。
我发现将 BlocListener
与 InitState
和 setState
结合使用在某种程度上是可行的,但我认为这使得 state.data
在 [=12= 中毫无用处] 也使算法对于这么小的任务变得复杂。
有没有更简单的方法来实现这个条件?
child: BlocBuilder<EducationBloc, EducationState>(
builder: (context, state) {
if (state is EducationLoaded) {
return ListEducationData(educations: state.data);
}
if (state is EducationCreated) {
final education = state.data;
// i want to push [education] to <ListEducationData>
}
...
...
创建列表来存储数据并使用 BlocListener 这样您就不需要在每次状态更改时都更改 ui。
var _listEducations = List<EducationData>();
child : BlocListener<EducationBloc,EducationState>(
listener: (_,state){
if (state is EducationLoaded) {
setState(() { //update _listEducations
_listEducations.addAll(state.data);
});
}
},
child : Container()
)