Flutter 如何在颤振中推动更换并移除整个导航堆栈?

Flutter 如何在颤振中推动更换并移除整个导航堆栈?,flutter,dart,navigation,Flutter,Dart,Navigation,我已经有了我的主页,我可以从中进入我的颤振应用程序的个人资料页面。在按下配置文件图标时,我将上下文推到配置文件页面,在该页面上我有一个更改密码的按钮。当我按下更改密码时,它会打开一个警报对话框,其中有文本字段可输入密码。我有一个logout函数,它通过清除首选项并将上下文推到登录屏幕作为替换来注销应用程序。现在我想在更改密码时注销我的应用程序。但它将替换推到导航堆栈的顶部,导航堆栈返回堆栈中的登录页面。我如何解决这个问题 _changePassword() async{ print(wi

我已经有了我的主页,我可以从中进入我的颤振应用程序的个人资料页面。在按下配置文件图标时,我将上下文推到配置文件页面,在该页面上我有一个更改密码的按钮。当我按下更改密码时,它会打开一个警报对话框,其中有文本字段可输入密码。我有一个logout函数,它通过清除首选项并将上下文推到登录屏幕作为替换来注销应用程序。现在我想在更改密码时注销我的应用程序。但它将替换推到导航堆栈的顶部,导航堆栈返回堆栈中的登录页面。我如何解决这个问题

_changePassword() async{
    print(widget.id);
    var data = {
      "newPassword": _passcontroller.text,
      "confirmNewPassword": _confirmpasscontroller.text
    };
    var res = await CallApi().putData(data, 'users/${widget.id}/password/change');
    var response = res.data;
    print(response);
    if (response['success']) {
      showSimpleFlushbar(context, 'Password Changed Successfully.');
      logout(context);
    }
  }
使用以下命令:

它将删除以前的所有导航,并将您带到登录页(第一页)

它将删除以前的整个导航

//Use this for logout

 Navigator.pushAndRemoveUntil(
                  context,
                  MaterialPageRoute(builder: (BuildContext context) => LoginPage()),
                 (Route<dynamic> route) => false
                );
//OR

 Navigator.of(context).pushNamedAndRemoveUntil('/landingpage', (Route<dynamic> route) => false);

//使用此选项注销
Navigator.pushandremove直到(
上下文
MaterialPage路由(生成器:(BuildContext上下文)=>LoginPage()),
(路由)=>错误
);
//或
Navigator.of(context).pushName和removeUntil('/landingpage',(Route-Route)=>false);

使用此代码删除颤振中的整个导航堆栈

Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) =>
                    ClassName()), (Route<dynamic> route) => false);
Navigator.of(context).pushandremoveintil(MaterialPageRoute(builder:(context)=>
ClassName(),(路由)=>false);

工作正常,谢谢。
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) =>
                    ClassName()), (Route<dynamic> route) => false);