繁体   English   中英

使用pushReplacment时等待孙子弹出

Wait for pop from grandchild when using pushReplacment

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

首先,我有这样的代码:

// Assume First, Second, and Third exist.

class FirstState extends State<First> {
  @override
  Widget build(BuildContext context) {
    return getMenuButton(
        onPressed: () async => {
                await Navigator.push(
                context,
                CustomMaterialPageRoute(
                    builder: (context) => Second()),
                ),
                print("Back to first"),
            });
  }
}

class SecondState extends State<Second> {
  @override
  Widget build(BuildContext context) {
    return getMenuButton(
        onPressed: () async => {
                await Navigator.pushReplacement(
                context,
                CustomMaterialPageRoute(
                    builder: (context) => Third()),
                ),                
            });
  }
}

class ThirdState extends State<Third> {
  @override
  Widget build(BuildContext context) {
    return getMenuButton(
        onPressed: () async => {
                await Navigator.pop()
            });
  }
}

请注意,First执行push ,Second执行pushReplacement ,Third执行pop

怎么了:

  1. 按“第一”按钮。
  2. 按下第二个按钮。
  3. 您会看到“回到第一”。

我想发生的事情:

  1. 按“第一”按钮。
  2. 按下第二个按钮。
  3. 在第三按按钮。
  4. 您会看到“回到第一”。

简而言之,问题是pushReplacement导致First中的await Navigator.push立即返回( 根据docs ),而我希望它像我刚完成push ,它将一直等待直到弹出。

我想要这样做的原因是因为我想将数据从第三传递回第一,但是如果我使用pushReplacement,则无法执行此操作。 作为一种解决方法,我想等待First中的推送,然后在First中重新加载一些数据,但是我找不到找到让First等待Third弹出的方法。

也许如果我可以控制pushReplacement返回的内容,可以使它返回Third的键,然后等待它? 不过,这看起来很简陋。

tl; dr:在子pushReplacement中使用pushReplacement时,如何等待子级导航路径,从而中断父级到子级之间的“等待连接”。

这个问题类似于强制Flutter导航器在弹出时重新加载状态,但是这里没有解决方案,因为pushReplacement (在这里是一个硬性要求)。

谢谢!

问题暂未有回复.您可以查看右边的相关问题.
1 如何使用离子弹出窗口?

我有一个按钮。 当我单击此按钮时,我需要显示一个带有2个按钮的弹出窗口。 取消和禁用。 当我单击“禁用”时,弹出窗口应隐藏,并且应禁用第一个按钮。 怎么做? 我只需要禁用第一个带有确认消息的按钮即可,该消息由离子弹出窗口提供。 ...

2 当子弹出窗口打开时,JPopupMenu关闭

我在JPopupMenu中有一个JComboBox(以及其他组件)。 事实证明,无论何时打开组合框的弹出窗口(选择项目),父JPopupMenu都会关闭。 我一直试图找到一种方法来覆盖这个功能,但无济于事。 有没有人有任何建议来阻止关闭父JPopupMenu? 谢谢! ...

4 python子进程在Windows上使用stdout设置等待孙子

我有一个脚本是自动化测试套件的一部分。 它在Windows上运行非常慢,但在Linux上却运行不了,我已经找到了原因。 我们正在测试的进程(“坦率”)创建一个子进程(因此是一个孙子进程)。 直到该子孙进程也结束(在Windows上-在Linux上不执行此操作),Python代码才会返回。 ...

8 打开子弹出窗口时禁用父窗口

我有一个在子窗口中弹出的aspx页面。 有没有一种方法可以使父窗口在弹出子窗口关闭之前不可访问? 作为记录,我使用以下jQuery代码打开和关闭弹出窗口。 在父页面上: 当从父aspx文件中单击名为“ btnLogos”的按钮时,上面的代码触发,然后在子弹出窗口中,我使用以下j ...

9 当子弹出窗口关闭时,父页面上的javascript警报

我正在使用javascript window.open方法打开,说http://www.google.com [它始终是一些外部网址] 我已经将窗口对象的引用存储在一个变量中,问题是该变量在父页面上永远不会为空,并且我无法提醒用户弹出窗口已关闭。 这是代码 我不能在弹出/子窗 ...

10 在子弹出窗口打开时如何禁用父窗口

我有一个父屏幕,其中包含一个按钮,单击哪个window.open(“ URL”,“ MsgWindow”,“ width = 200,height = 100”); 被调用,然后返回到子屏幕。 子屏幕还包含一些使用请求-响应机制执行CRUD操作的按钮,由于这些按钮需要更新父窗口的URL, ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM