我正在尝试用ListView生成器显示一些卡片
我想将每张卡片的高度自动设置为其子内容的高度
class HomePage extends StatelessWidget {
Widget _buildListItems(BuildContext context, DocumentSnapshot document) {
return Center(
child: Card(
child: Column(
children: <Widget>[
ListTile(
title: Text(document['title']),
subtitle: Text(document['subtitle']),
),
Expanded(
child: Container(
padding: EdgeInsets.all(20.0),
child: Text(
document['summary'],
softWrap: true,
),
),
)
],
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Title'),
centerTitle: true,
),
body: StreamBuilder(
stream: Firestore.instance.collection('randomDB').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text('Loading...');
return ListView.builder(
itemExtent: 225.0,
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) =>
_buildListItems(context, snapshot.data.documents[index]),
);
},
),
}
当文档['summary']太长时,它会使文本在卡片小部件中溢出。这次我所做的就是在ListView中增加itemExtent。Builder
有没有办法动态设置ListView的高度?
6条答案
按热度按时间gkl3eglg1#
只需要加上
shrinkWrap: true
。删除
itemExtent: 225.0,
(& R)wlp8pajw2#
我认为该列具有
mainAxisSize
属性MainAxisSize.min
将列大小拉伸到子列的最小大小。与之相对的是MainAxisSize.max
,它将拉伸到它所能达到的最大大小。但是我还没有测试过,希望能有所帮助
ca1c2owp3#
你可以用我的实现
此示例显示字符串列表
r6l8ljro4#
只是不要指定
itemExtent
参数。或者只给予它一个
null
值,而不是225.0
这样,子对象将获得所需的确切身高并输入
ListView
mklgxw1f5#
试试
ovfsdjhp6#
为列表视图添加零填充.builder减少了高度