gpt4 book ai didi

flutter - 如果用户在 flutter 中单击后退按钮,如何打开特定屏幕?

转载 作者:IT王子 更新时间:2023-10-29 06:43:15 24 4
gpt4 key购买 nike

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

登录 -> 首页 -> 借记 -> 支付 -> 支付成功

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

我想这样做:

如果用户在 PaymentSuccess 屏幕上点击返回按钮,用户应该转到 HomeScreen

我使用了如下所示的 pushAndRemoveUntil,但是当用户点击 PaymentSuccessScreen 上的后退按钮时,应用关闭,而不是路由到主屏幕。

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

最佳答案

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

关于flutter - 如果用户在 flutter 中单击后退按钮,如何打开特定屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54443604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com