当推送来自两个不同的屏幕时如何在特定屏幕上弹出

问题描述 投票:0回答:1

在此订单详细信息屏幕中,我将从两个差异屏幕进入,一个来自订单列表屏幕,一个来自结账弹出窗口,用于在成功下订单后显示订单详细信息,但我希望当我从详细信息屏幕返回时,我应该只弹出到订单列表屏幕

任何人都可以解决这个问题吗?

这是我的订单详细信息屏幕

  @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,
              ),
            ),
        ],
      ),
    );
  }
}
flutter dart webview
1个回答
0
投票

您可以通过将标识符 (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, ), ), ], ), ); } }

© www.soinside.com 2019 - 2024. All rights reserved.