Flutter - ListView.builder - 我们可以添加一个变量作为"index"旁边的"counter"吗?



我的问题可能看起来很糟糕,但我只是找不到更清晰的方式来表达。情况如下:

  • 我有一个信息列表包含在一个名为"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

相关内容

  • 没有找到相关文章

最新更新