我想推快餐店,如果国家是:
- PostSuccess -显示snackbar,通过Navigator.pop()转到上一个屏幕;
- 失败-显示Snackbar and not rebuild the listView.builder
if (state is EduWorkPostSuccess) {
showTopSnackBar(
Overlay.of(context),
CustomSnackBar.success(message: "Everything went alright"),
);
Navigator.pop(context);
} else if (state is EduWorkFailed) {
showTopSnackBar(
Overlay.of(context),
CustomSnackBar.error(
message: translation.translation[state.msg]),
);
}
}, builder: (context, state) {
if (state is EduWorkLoaded && state.isChanged) {
return Padding(
padding: const EdgeInsets.all(15.0),
child: Center(
child: UserDataSectionDesription(
description:
"Remember to save your changes", //TODO added to translation file, w8ting...
),
),
);
} else {
return SizedBox();
}
}
BlocBuilder<EduWorkBloc, EduWorkState>(
builder: (context, state) {
if (state is EduWorkLoading) {
return Center(
child: CircularProgressIndicator(
color: Theme.of(context).colorScheme.secondary,
));
} else if (state is EduWorkLoaded) {
return ListView.builder(
shrinkWrap: true,
itemCount: selectedMap.length,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.all(8),
child: EducationWidget(
isSelected: state.eduWork.isSelectedEdu(
selectedMap.values.elementAt(index).toString()),
index: index,
code: selectedMap.values.elementAt(index).toString(),
name: selectedMap.keys.elementAt(index).toString(),
onPressed: () {
final codeName =
selectedMap.values.elementAt(index).toString();
//if that level of education is selected unselect it
if (state.eduWork.education.contains(codeName)) {
state.eduWork.education.remove(codeName);
BlocProvider.of<EduWorkBloc>(context)
.add(ChangeEdu(state.eduWork));
//If unselected add it
} else {
state.eduWork.education.add(codeName);
BlocProvider.of<EduWorkBloc>(context)
.add(ChangeEdu(state.eduWork));
}
},
),
);
},
);
}
return Text('Error');
},
),
此时此刻,.Success正在正常运作.当状态为FAIL时,Snackbar会正常显示,但会返回文本(‘Error)’.我怎么才能解决这个问题?