奇葩问题
Container点击空白区域不执行点击事件(1.12.13+hotfix.9)
解决方案: 在外层的 GestureDetector上设置 behavior: HitTestBehavior.opaque,即可
点击红线圈住的空白处不执行点击事件
GestureDetector(
onTap: () {
print("GestureDetector");
},
child: Container(
width: double.infinity,
padding: EdgeInsets.only(top: 16),
child: Column(
children: <Widget>[
Container(
child: Row(
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 16),
child: Container(
width: 60,
height: 60,
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: _getImage(),
),
)
),
Expanded(
child: Container(
padding: EdgeInsets.only(left: 16, right: 6),
child: Text(
sentence.name,
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: DTextStyle.juDetailRecommendContent,
),
),
)
],
),
),
Container(
padding: EdgeInsets.only(top: 16),
child: hasDivider
? Divider(
color: Color.fromRGBO(230, 230, 230, 1),
indent: 16,
height: 1,
)
: SizedBox(),
)
],
),
),
);
就是在Container外层包了一个GestureDetector用来处理Container被点击的事件,但是以上代码,点击图片和文字都能够到onTap中,点击空白区域却不能。经一些测试发现,如果给Container设置背景色,点击空白区域就可以到onTap中了,如下
GestureDetector(
onTap: () {
print("GestureDetector");
},
child: Container(
color: Colors.white, // 这里设置一个颜色即可解决上述问题
width: double.infinity,
padding: EdgeInsets.only(top: 16),
child: Column(
......