你好,我有这个类
服务索引服务创建服务编辑
我想做的是点击"创建"或"编辑"中的按钮,我想弹出所有警报和页面,并将替换推送到ServicesIndex我到底该怎么办?
将在服务创建和编辑中单击的按钮
showSuccessMessage(context) {
var responsivenessController = ResponsivenessController(context);
Alert(
context: context,
type: AlertType.success,
style: AlertStyle(titleStyle: Theme
.of(context)
.textTheme
.bodyText1
, descStyle: Theme
.of(context)
.textTheme
.bodyText1),
title: translator.currentLanguage == 'ar' ? 'تم الحفظ'
: 'Stored Successfully',
desc: translator.currentLanguage == 'ar' ? 'تمت عملية الحفظ بنجاح'
: 'Information Stored Successfully',
buttons: [
DialogButton(
child: Text(
translator.currentLanguage == 'ar' ?
"المتابعة"
: 'OK',
style: TextStyle(color: Colors.white,
fontSize: responsivenessController.bodyFont),
),
onPressed: () {
Navigator.pop(context);
}
)
],
).show();
}
这一切都在按下事件你建议什么代码?
关于元素堆栈的
Index
---Create
---SuccessMessage
---Edit
---SuccessMessage
所以这个动作应该弹出2次并推动更换我当然可以像这个一样硬编码
onPressed: () {
Navigator.pop(context);
Navigator.pop(context);
Navigator.pop(context);
Navigator.pushReplacement(context, MaterialPageRoute(
builder: (BuildContext context) => className
));
}
但我想要一些更灵活的东西,比如只需传递类名,它就会返回到它,同时弹出之前的所有内容
注意:命名路由将不起作用,因为每个页面都需要一些参数,这些参数将在稍后的过程中传递。我无法在main.dart中获取所有参数。我会导致性能缓慢
如果您知道需要调用多少pop,那么只需将popUntil
与counter
一起使用即可。
代码
// In this case we want to pop 4 times
void onPressed() {
int count = 0;
Navigator.popUntil(context, (route) => count++ == 4);
}