所以我有一个设置屏幕,它是ListView
,我希望用户能够点击整个列表行来更改该设置。但是,我似乎找不到一种疯狂的方式来扩展GestureDetector
的子级来填充整个水平空间。
我的列表视图:
ListView(
children: [
GestureDetector(
onTap: () {
print('tapped the row');
},
child: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Totals expressed in', style: TextStyle(fontSize: 16.0)),
Text('Percentages', style: TextStyle(color: Colors.black54, fontSize: 15.0)),
],
),
),
),
Divider(height: 1.0),
// followed by other elements in the list view
这将检测到敲击,但仅检测文本元素在水平方向上占据的空间(屏幕宽度的一小部分)。我知道Expanded
小部件,但是无论我在哪里放置它,我都会收到一个错误,它必须是Row
或Column
的后代,或者是例外:
RenderFlex子级的flex为非零值,但传入的高度限制不受限制。
答案 0 :(得分:2)
在您的代码更改中-crossAxisAlignment: CrossAxisAlignment.start
更改为:
Column(
crossAxisAlignment: CrossAxisAlignment.stretch
这将使Column子级占据所有水平空间。
答案 1 :(得分:1)
尝试InkWell。 InkWell允许可点击的空间延伸到整个行。
答案 2 :(得分:0)
我一直在使用具有透明背景色的容器来解决此问题。