我正在构建一个显示缩略图的网格视图,但不想显示索引为0的项目。我有一个不同的小部件,在那里我使用一个列表视图和可见性小部件来显示缩略图。
就像这样:
ListView.separated(
separatorBuilder: (BuildContext context, int index) =>
SizedBox(
width: mainElementSize * 0.02,
),
scrollDirection: Axis.horizontal,
controller: paneController,
physics: const BouncingScrollPhysics(
parent: AlwaysScrollableScrollPhysics()),
addAutomaticKeepAlives: true,
reverse: true,
itemCount: mainElementList.mainElementList.length,
//
itemBuilder: (BuildContext context, int index) {
return Visibility(
visible: index > 0,
child: UnconstrainedBox(
child: HistoryThumb(
index: index,
),
),
);
}),
gridview确实可以使用Visibility,但不同的是,它不是跳过对象,而是在网格中留下一个整体。代码:
GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
mainAxisSpacing: gridheight * 0.015,
crossAxisSpacing: gridWidth * 0.015,
),
padding: EdgeInsets.symmetric(
horizontal: 0,
),
physics: const BouncingScrollPhysics(
parent: AlwaysScrollableScrollPhysics()),
itemCount:
Provider.of<MainElementList>(context).mainElementList.length,
//
itemBuilder: (context, index) => Visibility(
visible: index > 0,
child: UnconstrainedBox(
child: HistoryThumb(
index: index,
),
),
)),
截图:
有什么办法不让它这样做吗?我在这里找到了一个类似的主题:How to skip build in item builder gridview.builder Flutter Firebase Stream Builder
但是我不想建立一个单独的列表,复制我所有的对象只是为了显示缩略图。没有什么更优雅的跳过某些项目?
3条答案
按热度按时间xqkwcwgp1#
您可以应用三元运算符并在索引0处传递SizedBox:-,而不是使用Visibility小部件
你能这样试试吗:-
从itemCount中减去1,并在索引历史Thumb中加上1。我认为我们不能跳过构建中的某个项目,但我们可以实现您想要的!!
jv2fixgn2#
您可以通过将特定项目移动到列表末尾来实现所需的行为;那么您可以简单地隐藏网格视图中的最后一项。
这样,您就不会在网格视图中间看到任何空白。
例如:
xdyibdwo3#
您可以在构建器上使用条件