微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GestureDetector 仅检测内部小部件上的点击

如何解决GestureDetector 仅检测内部小部件上的点击

当我点击屏幕上的任意位置时,我需要我的应用将背景颜色更改为任何随机颜色。我试图使用 GestureDetector,但它只有在我点击文本时才有效,我不明白为什么会这样。

class _MyAppState extends State<MyApp> {
Color _color;

void changeColor() {
setState(() => _color = Colors.primaries[Random().nextInt(Colors.primaries.length)]);
}



@override
Widget build(BuildContext context) {
return Scaffold(
  body: GestureDetector(
  onTap: () => changeColor(),child: Container(
    color: _color,child: Center(
      child: Text('hey there'),),);
}
}

解决方法

只需将行为添加为不透明,这将允许它检测到孩子之外的手势。

@override
Widget build(BuildContext context) {
return Scaffold(
  body: GestureDetector(
  behavior: HitTestBehavior.opaque,onTap: () => changeColor(),child: Container(
    color: _color,child: Center(
      child: Text('Hey there'),),);
}
,

behavior: HitTestBehavior.translucent 添加到您的 GestureDetector

 body: GestureDetector(
                behavior: HitTestBehavior.translucent,// add this
              onTap: () => changeColor(),child: Container(
                color: _color,child: Center(
                  child: Text('Hey there'),

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。