我想用Grid View或Flutter的其他方式实现类似这张图片的东西。
我实现了使用下面的GridView.builder
一样的代码。但是这个代码并不像图片那样工作。
你能给予我你的想法来表达这样的图片吗?
GridView.builder(
itemCount: items.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
),
itemBuilder: (BuildContext context, int index) {
final isDoubleWidth = (index + 1) % 5 == 0;
final itemWidth = isDoubleWidth ? MediaQuery.of(context).size.width / 3 * 2 : MediaQuery.of(context).size.width / 3;
return SizedBox(
width: itemWidth,
child: Text(item[index].title.toString),
);
},
);
3条答案
按热度按时间kpbwa7wx1#
使用flutter_staggered_grid_view: ^0.6.2即可
lsmepo6l2#
GridView
不支持您在图片中显示的内容。如果你不想使用第三方插件,我建议你使用ListView
和Row
小部件来构建这个UI。您可以将此UI视为一个行列表,每行将包含2或3个元素。因此,根据ListView.builder()
的itemBuilder
参数的索引,您可以计算出应该为这个列表项(整行)显示哪些元素,然后您可以使用Row
小部件构建自己的行。zzzyeukh3#
有了这段代码,我就可以实现这幅图。
在本例中,我增加了5,因为列和行都在5个项目中。