Flutter:将Expanded包裹在GestureDetector中触发ParentDataWidget异常
问题根源
Expanded属于ParentDataWidget,它的核心作用是向父级的Row/Column/Flex组件传递布局约束,告知父组件自己需要占据剩余可用空间。但你现在把Expanded放在了GestureDetector内部,而GestureDetector并非Flex系列组件,无法识别Expanded传递的布局约束,因此抛出异常。
一句话总结:Expanded必须直接作为Row/Column/Flex的直接子组件,不能被其他组件包裹。
解决方法
调整组件嵌套顺序,让GestureDetector作为Expanded的子组件,这样Expanded直接处于Row下,能正常传递布局约束,同时GestureDetector为文本添加点击事件:
Expanded( child: GestureDetector( child: Text( displayTime ? "Some text" : "Some other text", style: textStyle, ), onTap: () { // 编写你的点击逻辑 }, ), ),
这样既保留了Expanded的布局效果,又能实现点击功能,完全符合Flutter的组件嵌套规则。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

