我有五个屏幕和页面路由方向,如下所示:
登录 -> 首页 -> 借记 -> 付款 -> 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)
在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)
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |