如果用户在颤动中单击返回按钮,如何打开特定屏幕?

Mes*_*sci 3 flutter

我有五个屏幕和页面路由方向,如下所示:

登录 -> 首页 -> 借记 -> 付款 -> PaymentSuccess

在付款屏幕上,如果付款成功,我正在打开付款成功屏幕。

我想做这个:

如果用户点击PaymentSuccess屏幕上的返回按钮,用户应该去HomeScreen

我使用pushAndRemoveUntil如下所示,但是当用户在PaymentSuccessScreen应用程序关闭时单击返回按钮时,而不是路由到 HomeScreen。

    // Payment Screen
    Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(
      builder: (context) {
        return PaymentSuccessScreen(period: period);
      },
    ), ModalRoute.withName('/home-screen'));
Run Code Online (Sandbox Code Playgroud)

Cop*_*oad 5

Login页面中,导航到Home页面时,使用

Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => HomePage())),
Run Code Online (Sandbox Code Playgroud)

Home页面中,导航到Debit页面时,使用

Navigator.push(context, MaterialPageRoute(builder: (context) => DebitPage())),
Run Code Online (Sandbox Code Playgroud)

Debit页面中,导航到Payment页面时,使用

Navigator.push(context, MaterialPageRoute(builder: (context) => PaymentPage())),
Run Code Online (Sandbox Code Playgroud)

现在在Payment页面中,使用以下内容:

class PaymentPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Payment")),
      body: WillPopScope(
        onWillPop: () { // this is the block you need
          Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => HomePage()), (route) => false);
          return Future.value(false);
        },
        child: Center(
          child: RaisedButton(
            child: Text("Go to payment success"),
            onPressed: () => Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => PaymentSuccessPage())),
          ),
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)