Flutter:如何让ListView Item内的容器占满剩余高度?
解决ListView Item左侧连线占满剩余高度的问题
问题出在你的Row没有强制子项拉伸到相同高度,加上IntrinsicHeight的限制导致左侧无法跟随右侧内容高度自适应。可以按以下方式修改代码:
Widget _buildListViewItem(BuildContext context) { return Row( crossAxisAlignment: CrossAxisAlignment.stretch, // 关键:让Row子项拉伸至Row的高度 children: [ Column( mainAxisAlignment: MainAxisAlignment.start, children: [ const Padding( padding: EdgeInsets.only(left: 8.0), child: CircledLetterAvatar( text: "T", size: 40, ), ), Expanded( child: Padding( padding: const EdgeInsets.only(left: 8.0), child: Container( width: 2, color: Colors.white, ), ), ) ], ), Expanded( child: Padding( padding: const EdgeInsets.all(8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text("Full Name"), Text( "In publishing and graphic design, " "Lorem ipsum is a placeholder text commonly used to demonstrate " "the visual form of a document or a typeface without relying on meaningful content. " "Lorem ipsum may be used as a placeholder before final copy is available", ), ], ), ), ), ], ); }
关键改动说明:
- 去掉外层包裹Row的Column,直接返回Row,减少不必要的嵌套
- 将Row的
crossAxisAlignment改为CrossAxisAlignment.stretch:这会让Row的所有子项自动拉伸到Row的总高度(由右侧内容的高度决定) - 移除左侧的
IntrinsicHeight:这个组件会强制子项高度适应内容,反而限制了拉伸效果,现在Row已经能保证高度一致,不需要它 - 左侧Column保持
mainAxisAlignment.start,让头像固定在顶部,Expanded的连线组件自动填充头像到Row底部的剩余空间,实现类似Twitter线程的连线效果
内容的提问来源于stack exchange,提问作者ololo
相关产品推荐
相关产品推荐

