我尝试在Flutter中使用一个简单的ListView。问题是我想为一张卡片使用列表的两个索引(索引)。所以当列表视图扩展时,它应该使用两个索引,第一个卡片可以访问索引1和2的数据,第二个卡片可以访问索引3和4的数据,以此类推。如果有人知道如何建立这样的东西,我会很感激:)
vsikbqxv1#
我觉得有两种方法可以处理这种情况...
您可以生成其他列表,其中每个元素将包含原始列表的2个元素。
使用isOdd或isEven忽略某些索引。
ListView.builder( itemCount: myList.length itemBuilder: (_, index) { if(index.isEven){ return MyCustomTile( first: myList[index] second: index + 1 == myList.length ? null : myList[index+1] ); } return Container(); } )
注意不要让索引超出列表的范围
avwztpqn2#
我就是这么处理的,以防将来有人用得上:
ListView.builder( scrollDirection: Axis.horizontal, itemCount: itemList.length, itemBuilder: (context, index) { if (index % 2 == 0 && index < itemList.length) { return Column( children: [ ListElementWidget(data: itemList[index]), (index + 1 < itemList.length) ? Padding( padding: const EdgeInsets.only(top: 8.0), child: ListElementWidget( data: itemList[index + 1]), ) : const SizedBox( width: 0, ), ], ); } else { return const SizedBox(width: 0); } }, ), ),
除了使用sizedbox size 0之外,肯定有一种更好的方法来设计不存在的小部件,但我对flutter相当陌生,而且它很有效。
w6lpcovy3#
也可以这样做:
SizedBox.shrink();
正在保存代码行:)
3条答案
按热度按时间vsikbqxv1#
我觉得有两种方法可以处理这种情况...
第一次
您可以生成其他列表,其中每个元素将包含原始列表的2个元素。
秒
使用isOdd或isEven忽略某些索引。
注意不要让索引超出列表的范围
avwztpqn2#
我就是这么处理的,以防将来有人用得上:
除了使用sizedbox size 0之外,肯定有一种更好的方法来设计不存在的小部件,但我对flutter相当陌生,而且它很有效。
w6lpcovy3#
也可以这样做:
正在保存代码行:)