Flutter中GestureDetector onTap仅响应文本区域,无法全屏触发问题
解决Flutter GestureDetector仅响应文本区域点击的问题
你的问题出在GestureDetector的可点击范围由其子组件的实际尺寸决定——当前子组件是Center包裹的Text,只有文本所在的小区域能触发点击事件,屏幕其他区域自然不会响应。
要让AppBar以外的任意区域都能触发计数器更新,只需要让GestureDetector的子组件占据整个可用空间即可,有两种简单实现方式:
方式一:使用SizedBox.expand
修改_ClicksState的build方法,用SizedBox.expand包裹Center和文本,让子组件自动占满父级分配的所有空间:
@override Widget build(BuildContext context) { return GestureDetector( onTap: () => setState(() { count++; }), child: SizedBox.expand( child: Center( child: Text("total number of clicking on scren is $count "), ), ), ); }
方式二:使用Container设置无限宽高
也可以用Container并设置width和height为double.infinity,达到同样的效果:
@override Widget build(BuildContext context) { return GestureDetector( onTap: () => setState(() { count++; }), child: Container( width: double.infinity, height: double.infinity, child: Center( child: Text("total number of clicking on scren is $count "), ), ), ); }
修改后,GestureDetector的点击区域会覆盖Expanded分配的整个屏幕空间(也就是AppBar以外的所有区域),点击任意位置都会触发计数器更新。
内容的提问来源于stack exchange,提问作者majed
相关产品推荐
相关产品推荐

