我在Text
中有2个GestureDetector
小部件。 onTap
回调仅在我触摸Text
时通知,而不是在Container
内的空白处通知。如何像按下按钮一样发出通知?
+------------------------------------------------+
| Very very very long long ◎ng long text view |
| Short ◎xt ⦿ |
+------------------------------------------------+
Tapped
。我的源代码:
ListView.separated(
itemCount: _listModel.length,
padding: EdgeInsets.only(left: NOTIFICATION_LEFT_SPACE),
separatorBuilder: (context, index) => Divider(),
itemBuilder: (BuildContext context, int index) => GestureDetector(
child: Container(
child: Hero(
tag: _listModel[index].title,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text('Very very very long long long long text view'),
SizedBox(height: 10),
Text('Short text')
],
),
),
),
onTap: () {
print('Tapped');
},
),
)
答案 0 :(得分:2)
您可以使用behavior: HitTestBehavior.opaque
小部件的GestureDetector
属性,即使Container
小部件没有任何子级,也可以帮助点击Container
内部的占位符。
GestureDetector(
behavior: HitTestBehavior.opaque,
child: Container(
child: Hero(
tag: 'test',
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text('Very very very long long long long text view'),
SizedBox(height: 10),
Text('Short text')
],
),
),
),
onTap: () {
print('Tapped');
},
),
答案 1 :(得分:0)
我找到了解决方法。 为由 GestureDetector 包裹的容器提供一个盒子装饰,并在盒子装饰中提供一种颜色:Colors.transparent。这将用透明背景替换容器的空白,因此 UI 保持不变,并且 onTap 也将在单击空白时起作用。查看示例代码片段。
master