用键替换堆栈中的小部件

Posted

技术标签:

【中文标题】用键替换堆栈中的小部件【英文标题】:Replace Widget in Stack with Keys 【发布时间】:2020-02-11 13:15:53 【问题描述】:

在 Flutter Stack 文档中,您可以使用 Keys 替换 Stack Widget 中的 Widget。您可以在 key 属性中使用 GlobalKeys。问题是,我不知道如何使用键来替换 Stack Widget 中的 Widget。我想得到一个完整的例子,用他们的 GlobalKey 替换堆栈中的一个小部件。

【问题讨论】:

你能发布你到目前为止尝试过的代码吗?以便人们可以帮助您更正您的代码。 我想替换堆栈小部件中的一个小部件 所以用新的子列表重建你的Stack 我想用按钮替换小部件 【参考方案1】:

它不适用于小部件位置

控制一个小部件如何替换树中的另一个小部件。

根据您的情况使用定位小部件

一个控制堆栈子级位置的小部件。

如果您需要小部件的位置来设置另一个小部件位置,您可以使用第一个键,如下所示

  final keyContext = fisrtWidgetKey.currentContext;
  if (keyContext != null) 
    box = keyContext.findRenderObject();
    if (box != null) pos = box.localToGlobal(Offset.zero);
  

pos 包含您传递给它的小部件的 dx 和 dy 键

【讨论】:

以上是关于用键替换堆栈中的小部件的主要内容,如果未能解决你的问题,请参考以下文章

使用堆栈的拖动小部件更新所有附加的小部件

Flutter - 堆栈中定位的小部件导致异常

PyQt4 - 自定义小部件类结构?

用Flutter中的新小部件替换dismissed小部件

定位的小部件导致孩子消失/异常

多个文件中的 PyQt 小部件