Flutter:在 GestureDetector 中包装 Expanded 时出现“不正确使用 ParentDataWidget”异常

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

免责声明:我对 Flutter 比较陌生,所以我不太清楚与哪个小部件“可以”进入哪个其他小部件相关的一些限制,所以这可能是一个简单的错误......我感谢大家的耐心和指导!

大家好! :)

我将从导致错误的更改开始:

GestureDetector(
  child: Expanded(
    child: Text(
      displayTime ? "Some text" : "Some other text"
      style: textStyle),
    ),
   onTap: () { // No code yet here 
   },
),

使用上面的代码,在将 Expanded 包装在 GestureDetector 中之后,我立即收到“ParentDataWidget 的错误使用”异常。如果我删除 GestureDetector,该应用程序就可以正常工作。

它所在的小部件位于以下树中: Widget Tree of the widget where the GestureDetector sits

这个小部件本身位于以下树中(TaskBubble): View of where the problematic widget sits in

现在,我总是可以解决这个问题并找到另一种方法来解决这个问题

onTap()
,但我宁愿了解这个问题以永久解决它。

我尝试过以下方法:

  1. 删除 GestureDetector - 从而消除异常
  2. 删除扩展 - 它可以工作,但是我没有得到我想要的布局 - 即在连续的两个其他小部件之间扩展的文本字段
  3. 了解我的 Widget 树选择是否正确(即大致:ListView、Row、Widget、Row、GestureDetector、Expanded 树) - 但目前我找不到任何结论。

感谢支持!

干杯!

flutter exception row gesturedetector expanded
1个回答
0
投票

好吧,我想发布问题足以找到解决方案。我的问题下推荐的一篇文章是: 如何使用 Expanded,例如从列到扩展路径上的手势检测器

所以问题是Expanded 需要是Row 的直接子级。将 GestureDetector 放在 Text 小部件上就成功了:

Expanded(
  child: GestureDetector(
    child: Text(
      displayTime ? "Text" : "Other text"
      style: ts),
    onTap: () {},
  ),
),

希望我的帖子和自我回答对其他人有帮助。

谢谢!

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