如果用户在颤抖中单击“后退”按钮,如何打开特定屏幕?

时间:2019-01-30 15:05:36

标签: flutter

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

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

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

我想这样做:

如果用户在PaymentSuccess屏幕上单击后退按钮,则用户应转到HomeScreen

我使用了如下所示的pushAndRemoveUntil,但是当用户在PaymentSuccessScreen应用关闭时单击后退按钮时,没有路由到HomeScreen。

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

1 个答案:

答案 0 :(得分:1)

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

Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => HomePage())),

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

Navigator.push(context, MaterialPageRoute(builder: (context) => DebitPage())),

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

Navigator.push(context, MaterialPageRoute(builder: (context) => PaymentPage())),

现在在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())),
          ),
        ),
      ),
    );
  }
}