如何解决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 举报,一经查实,本站将立刻删除。