所以我有一个设置屏幕,这是一个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,但传入高度约束是无限制的。
在您的代码更改 - crossAxisAlignment: CrossAxisAlignment.start
:
Column(
crossAxisAlignment: CrossAxisAlignment.stretch
这将使Column子项占据所有水平空间。
我一直在使用具有透明背景颜色的Container来解决这个问题。