在ListView Flutter布局中点击整行

时间:2019-02-20 07:50:22

标签: dart flutter flutter-layout

所以我有一个设置屏幕,它是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小部件,但是无论我在哪里放置它,我都会收到一个错误,它必须是RowColumn的后代,或者是例外:

  

RenderFlex子级的flex为非零值,但传入的高度限制不受限制。

3 个答案:

答案 0 :(得分:2)

在您的代码更改中-crossAxisAlignment: CrossAxisAlignment.start更改为:

Column(
      crossAxisAlignment: CrossAxisAlignment.stretch

这将使Column子级占据所有水平空间。

答案 1 :(得分:1)

尝试InkWell。 InkWell允许可点击的空间延伸到整个行。

答案 2 :(得分:0)

我一直在使用具有透明背景色的容器来解决此问题。