如何解决即使孩子在按钮上,如何知道孩子是否被点击?
我想创建一个 Widget
来检测用户何时点击它。为此,我使用了带有 GestureGetector
函数的 onTap
来检测它。
但是,如果子项包含按钮,则永远不会调用 onTap
回调。
这是一个例子:
import 'package:Flutter/material.dart';
void main() {
runApp(
MaterialApp(
home: MyWidget(
child: UnkownWidget(),),);
}
class MyWidget extends StatelessWidget {
const MyWidget({
@required this.child,});
final Widget child;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: GestureDetector(
behavior: HitTestBehavior.translucent,onTap: () {
print('tapped');
},child: Container(
width: 200.0,height: 200.0,color: Colors.blue,child: child,alignment: Alignment.center,);
}
}
class UnkownWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 150.0,height: 150.0,color: Colors.red,child: TextButton(
child: Text('Button'),onpressed: () {
print('Button pressed');
},);
}
}
当我点击蓝色的 Container
时,我会在控制台中看到 tapped
但当我点击红色的时,我只看到 Button pressed
(没有 tapped
) 但我希望触发两个回调。
我尝试使用 HitTestBehavior.defertochild
/ HitTestBehavior.translucent
/ HitTestBehavior.opaque
但它没有改变任何东西。
我还应该指定我对 UnkownWidget
没有任何控制权,因为它可以是任何东西,而且我仍然希望 UnkownWidget
行为正常(仍然通过点击其按钮触发) .
我怎样才能做到这一点?
解决方法
我不认为你可以在 Flutter 中做这样的事情。
但幸运的是,我想到了一个解决方法。那么你可以做的就是在红色容器的onTap函数内部调用蓝色容器的onTap函数。这将模拟一种效果,即当实际上只有红色容器被点击时,两个容器都被点击:
按照此问题获取执行相同操作的解决方案代码:
How do I programmatically simulate onTap on a button in Flutter?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。