首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

调用Navigator.of( context ).pop()后如何获取父context?

调用Navigator.of(context).pop()后,可以通过以下方式获取父context:

  1. 使用Navigator的回调函数:在调用pop()方法时,可以传递一个回调函数作为参数。该回调函数会在页面返回到父页面时被调用,并且会传递一个参数,即返回到父页面时的context。可以在回调函数中将该context保存起来,以便后续使用。

示例代码:

代码语言:txt
复制
Navigator.of(context).popUntil((route) {
  // 在这里获取到父context并保存
  parentContext = route.settings.context;
  return true;
});
  1. 使用GlobalKey:在父页面的Widget中创建一个GlobalKey对象,并将其传递给子页面。子页面可以通过该GlobalKey对象获取到父页面的context。

示例代码: 在父页面中:

代码语言:txt
复制
GlobalKey parentKey = GlobalKey();

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => ChildPage(parentKey: parentKey),
  ),
);

在子页面中:

代码语言:txt
复制
class ChildPage extends StatelessWidget {
  final GlobalKey parentKey;

  ChildPage({required this.parentKey});

  // 在需要获取父context的地方使用parentKey.currentContext即可
  // 例如:parentKey.currentContext.findAncestorWidgetOfExactType<ParentWidget>()
}

通过以上两种方式,可以在调用Navigator.of(context).pop()后获取到父context,并在需要的地方使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【Flutter 专题】57 图解页面小跳转 (三)

    使用 popUntil 时不可传递返回值,对于返回首页 firsPage 时不可用 ModalRoute.withName('firstPage') 和尚整理了其他几种方式获取根目录首页路径; // 跳转...predicate(_history.last)) pop(); } 这样我们可以用最直接的方法手动调用 pop(result) 传递一个状态码,在各页面的 then 方法中接收判断...,再调用 pop(result) 等直到目标页面;和尚认为这种方式的优点是实现简单,思路清晰;缺点是每个页面均需要接收回调判断; 和尚查询网上 nguyentuanhung 自定义的 flutter_popuntil...(context).pop(results); } } });...popUntil 时给一个 Provider 赋值,在到达目的页面时获取 Provider 内容;有需要可以参考和整理的 Provider 基本用法; ?

    1.7K41

    Flutter 小技巧之优化你使用的 BuildContext

    首先如下代码所示,在该例子里当用户点击 FloatingActionButton 的时候,代码里做了一个 2秒的延迟,然后才调用 pop 退出当前页面。...可以看到此时 log 说,Widget 对应的 Element 已经不在了,因为在 Navigator.of(context) 被调用时,context 对应的 Element 已经随着我们的退出销毁...mounted) return;          Navigator.of(context).pop();       },     ),   ); } } 上面代码里的 mounted 标识位来自于...那如果假设需要在开发时展示点击数据上报的结果,也就是 Item 被释放了还需要弹出,这时候需要如何处理?...直接在 build 里调用肯定可以,虽然 build 会被比较频繁执行,但是 of(context) 操作其实就是在一个 map 里通过 key - value 获取泛型对象,所以对性能不会有太大的影响

    1.3K00

    那些初学者实践 Flutter 最常出现的错误

    异步任务结束在页面被pop之后,但没有检查State 是否还是 mounted,继续调用 setState 就会出现这个错误。...示例代码 一段很常见的获取网络数据的代码,调用 requestApi(),等待Future从中获取response,进而setState刷新 Widget: class AWidgetState extends...典型错误二:Navigator.of(context) 是个 null 典型错误信息:NoSuchMethodError: The method 'pop' was called on null....Navigator.of(context).pop(); 原因分析: 出错的原因在于—— Android 原生的返回键:虽然代码指定了barrierDismissible: false,用户不可以点半透明区域关闭弹窗...另外,代码里的Navigator.of(context) 所用的context也不是很正确,它其实是属于showDialog调用者的而非 dialog 所有,理论上应该用builder里传过来的context

    2.9K21

    Flutter 路由参数传递及接收

    Navigator 的 push 和 pop方法 Navigator 导航器的 push 和 pop 方法可以携带参数在页面间传递,其他变形的方法也一样。...(context).pop({'id': routeParams['id']}); return true; }, ); } } 实际上这个ModalRoute.of...这里我们调用了 携带参数的 pop 方法以便将参数回传。实际这里往往做一些其他处理,例如表单没有保存询问是否确认李可,还有广大电商的活动页询问你是“忍痛离开”或是“再看一会”的处理。...); return widget; }, ); } 总结 本篇介绍了路由参数的传递示例以及路由拦截参数修改,在实际过程中一般是往下级传递路由参数,需要尽量避免来回传参来实现数据传递导致上下级页面耦合严重...在 pub 上fluro 路由管理非常流行,下一篇介绍如何使用 fluro 实现页面路由。

    1.2K00
    领券