Flutter 扩展容器中的手势检测
我的小部件有一个区域是用扩展容器创建的,如:Flutter 扩展容器中的手势检测,flutter,gesture,Flutter,Gesture,我的小部件有一个区域是用扩展容器创建的,如: child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Container( color: Colors.blueGrey[200], child: Text( startTime, textAlign: TextAlign.left, style: TextStyle(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Container(
color: Colors.blueGrey[200],
child: Text(
startTime,
textAlign: TextAlign.left,
style: TextStyle(
backgroundColor: Colors.blueGrey[200],
fontSize: 16,
fontWeight: FontWeight.normal),
),
),
Expanded(
/* If this gesture detector is instantiated the tap is never found;
child: GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () => print("OnTap"),
*/
child:
Container(color: Colors.red[600]),
//),
), // Expanded
], // children
), // Column
如果上面的代码是用这个包装的
Expanded(
child: GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () => print("OnTap"),
child: Container(
color: Colors.red[600],
child: // Code above
), // Container
), //GestureDetector
), // Expanded
然后,onTap只在文本小部件中注册,而不会在最后一个扩展的容器中注册
检测没有在容器上触发,并且需要一个小部件来填充要检测的空间,这是否正确
编辑
我将扩展容器的手势检测更改为:
Expanded(
child: Material(
color: Colors.red[600],
child: InkWell(
onTap: () {print("InkWell");},
), // InkWell
), // Material
), // Expanded
点击仍然无法识别。第一段代码应该可以正常工作,我认为您从代码的另一部分得到错误,请提供完整的代码好吗?还有你在控制台里看到的东西
这是您在DartPad中完全工作的代码片段:很遗憾,我不能,因为它正在添加到SpanaBlegridView中,我不知道他们在做什么。您是在谈论这个SannableGrid:?如果您提供页面的所有代码,将非常有用。如果你认为这个问题是指向软件包的链接,我建议你在这里打开一个问题:页面超过350行,并调用专有api来获取然后显示的信息。我将写一个较小的页面,并伪造数据,使其易懂。没有其他方法来调试Flatter应用程序吗?由于您的错误来自UI,如果您没有提供有关UI的详细信息,我们无法帮助您进行调试,请使用控制台日志进行调试,如果有错误阻止Flatter正确构建UI,我们将在此处提供。否则,如果你想让你的代码保持清晰易懂,那么将UI代码和对API的调用结合起来从来都不是一件好事。我感谢你的帮助,如果没有API中的数据,页面将无法显示。我使用未来的构建器来构建UI,因此有很多地方可能出错。我已经使用颤动了大概2个星期,所以到目前为止,我会把我自己当作一个新手。我现在和未来的建设者有麻烦了。这就像往山上推绳子一样。你能展示一下专栏的父控件吗?如果您使用的是scaffold?@Anas Mohammed I通过重写Future Builder解决了这个问题,返回了一个SpannableGrid实例,更加简洁。我应该删除这个问题还是添加我自己的答案?代码是几百行代码,没有人会从中学习到任何东西。两周前我开始使用flutter?这取决于你。你可以写一个解决方案,描述为什么它不起作用,或者如果你认为写答案对任何人都没有帮助,那么你可以删除它。