Flutter - 导航到特定屏幕并弹出其上方的所有内容

Flutter - Navigating to specific screen and popping everything above it

你好,我有这个类

服务索引 服务创建 服务编辑

我想做的是单击创建或编辑中的按钮我想弹出所有警报和页面并将替换推送到 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
        ));
      }

但我想要一些更灵活的东西,比如只传递 Class 名称,它将 return 传递给它,同时弹出它之前的所有内容

注意:命名路由将不起作用,因为每个页面都需要一些参数,这些参数将在稍后的过程中传递我无法在main.dart中全部获取它们我会导致性能下降

如果您知道需要调用多少 pop,那么只需使用 popUntilcounter

代码

// In this case we want to pop 4 times
void onPressed() {
   int count = 0;
   Navigator.popUntil(context, (route) => count++ == 4);
}