在此订单详细信息屏幕中,我将从两个差异屏幕进入,一个来自订单列表屏幕,一个来自结账弹出窗口,用于在成功下订单后显示订单详细信息,但我希望当我从详细信息屏幕返回时,我应该只弹出到订单列表屏幕
任何人都可以解决这个问题吗?
这是我的订单详细信息屏幕
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: AppColors.appbarColor,
title: Text(
'Order Details',
style: GoogleFonts.poppins(color: AppColors.textColor),
),
),
body: Stack(
children: [
WebViewWidget(controller: _webViewController),
if (_isLoading)
Center(
child: CircularProgressIndicator(
color: AppColors.buttonColor,
),
),
],
),
);
}
}
您可以通过将标识符 (fromOrdersList) 传递到“订单详细信息”屏幕并根据其值处理导航来解决此问题。
导航到“订单详细信息”时,传递一个标志:
飞镖 复制代码 // 来自订单列表 导航器.push( 语境, 材质页面路由( 生成器:(上下文)=> OrderDetailsScreen(fromOrdersList:true), ), );
// 来自结账弹出窗口 导航器.push( 语境, 材质页面路由( 生成器:(上下文)=> OrderDetailsScreen(fromOrdersList:false), ), ); 修改“订单详细信息”屏幕以处理后退导航:
飞镖 复制代码 类 OrderDetailsScreen 扩展 StatelessWidget { 来自 OrdersList 的最终布尔值;
OrderDetailsScreen({required this.fromOrdersList});
@覆盖 小部件构建(BuildContext上下文){ 返回脚手架( 背景颜色:颜色.白色, 应用栏:应用栏( 背景颜色:AppColors.appbarColor, 标题:文本( '订单详情', 样式:GoogleFonts.poppins(颜色:AppColors.textColor), ), 前导:图标按钮( 图标:图标(Icons.arrow_back), 按下时:() { 如果(来自订单列表){ 导航器.pop(上下文); } 别的 { Navigator.of(context).pushAndRemoveUntil( MaterialPageRoute(构建器:(上下文) => OrdersListScreen()), (路线)=>假, ); } }, ), ), 主体:堆栈( 孩子们: [ WebViewWidget(控制器:_webViewController), 如果(_正在加载) 中心( 子:圆形进度指示器( 颜色:AppColors.buttonColor, ), ), ], ), ); } }