我想画一个垂直列表。列表中的每一项都应该只填充 Package 大小。
但我的代码绘制的列表项与全宽如下:
我尝试使用MainAxisSize.min
,但它不工作。
class HomePage extends StatelessWidget {
HomePage({super.key});
final List<String> list = ["apple", "banana", "cat", "dragon"];
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
shrinkWrap: true,
itemCount: list.length,
itemBuilder: (context, index) {
return Container(
decoration:
BoxDecoration(border: Border.all(color: Colors.black)),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Text('[$index]'),
const SizedBox(width: 4),
Text(list[index])
],
),
);
}),
);
}
}
4条答案
按热度按时间ccrfmcuu1#
因为使用了
ListView
,所以子进程将填充宽度。如果不想显示太多数据,可以考虑使用
SingleChildScrollView
我在这里写了一篇文章来比较它们,并解释了何时使用它https://medium.com/easyread/my-october-flutter-notes-2-6e0c78cf2e56
bz4sfanl2#
添加
Allign
并向左对齐:ecbunoof3#
默认情况下,
ListView
采用所有可用的宽度,即使你用Align
Package 你的container
,这只是改变了item's width
的宽度,而不是ListView
的宽度(如果你用彩色容器 Package 你的列表视图,你会看到)。如果您不使用长列表,您可以使用
SingleChildScrollView
和Column
如下:字符串
k3fezbri4#
更多的变通方案:根据所需的布局,将ListView放置到一行中或将另一个小部件放置到行的末尾。