我的问题可能看起来很糟糕,但我只是找不到更清晰的方式来表达。情况如下:
- 我有一个信息列表包含在一个名为"carnetlist"的列表中。(见下面的代码)。
- 我应该只显示参数" theme "是假的。这很好。然而,我需要编号的信息,我正在显示。我用了"索引"列表n°1等"。但是因为它跳过了一些元素(thematic == true),所以我得到了"List n°1…然后列出n°4等等。
是否有办法添加另一个"计数器";? 我可以用它来代替' index ';哪一个实际对应的是显示的元素数?
代码如下:
ListView.builder(
cacheExtent: 2000,
padding: const EdgeInsets.all(20),
itemCount: uD.userInfo.carnetList.length,
itemBuilder: (context, index) {
return uD.userInfo.carnetList[index].thematic == false
? CarnetListCard2(
index: index, **// This is where I used Index to display "List n+$index" in the widget.**
taille: uD.userInfo.carnetList[index].carnetWordId.length,
titre: uD.userInfo.carnetList[index].titre,
dateCreation: uD.userInfo.carnetList[index].creation,
dateModification:
uD.userInfo.carnetList[index].modification,
test: uD.userInfo.carnetList[index].test,
dateTest: uD.userInfo.carnetList[index].testDate,)
: Container();
},
),
您很接近了,但是您不想在项目构建期间过滤列表。如果你确保你的列表在传递给listview之前被过滤了,你就会得到你想要的结果。最简单的方法是:
final list = D.userInfo.carnetList.where((carnet) => !carnet.thematic).toList();
return ListView.builder(
itemCount: list.length,
itemBuilder: (context, index) {
final carnet = list[index];
final number = index + 1;
...
}
)
或者如果您不想使用单独的列表
ListView(
children: D.userInfo.carnetList.where((carnet) => !carnet.thematic).map((item) {
return ... // your widget
}).toList();
);
还可以使用计数器,只要条件为真,就增加它。
它将作为index of the items that are actually good for me
。
int _itemsCounter = 0;
ListView.builder(
cacheExtent: 2000,
padding: const EdgeInsets.all(20),
itemCount: uD.userInfo.carnetList.length,
itemBuilder: (context, index) {
if (uD.userInfo.carnetList[index].thematic == false) _itemsCounter++;
return uD.userInfo.carnetList[index].thematic == false
? CarnetListCard2(
index: index, **// This is where I used Index to display "List n+$index" in the widget.**
taille: uD.userInfo.carnetList[index].carnetWordId.length,
titre: uD.userInfo.carnetList[index].titre,
dateCreation: uD.userInfo.carnetList[index].creation,
dateModification:
uD.userInfo.carnetList[index].modification,
test: uD.userInfo.carnetList[index].test,
dateTest: uD.userInfo.carnetList[index].testDate,)
: Container();
},
),
请确保当您使用_itemsCounter
作为索引时,将其减去1。
如果有3项满足条件,则计数器为3,但元素的索引为0、1、2