列表视图使用 Flutter 中的属性过滤掉最后一行数据
Posted
技术标签:
【中文标题】列表视图使用 Flutter 中的属性过滤掉最后一行数据【英文标题】:List view filter out last row data using property in Flutter 【发布时间】:2020-04-15 09:06:24 【问题描述】:我有一个包含项目名称、索引和计数的列表。现在有多个具有相同索引的项目,但我想将它们过滤到一个新列表中,该列表将只有每个索引的最后一行数据。
例如,如果我的列表如下:
ALPHa index 0 and count is 2
ALPHa index 0 and count is 3
ALPHa index 0 and count is 4
ALPHa index 0 and count is 5
ALPHa index 0 and count is 4
ALPHa index 0 and count is 3
ALPHa index 0 and count is 2
ALPHa index 0 and count is 1
ALPHa index 0 and count is 5
ALPHa index 0 and count is 0
BETA index 1 and count is 1
BETA index 1 and count is 2
BETA index 1 and count is 3
BETA index 1 and count is 4
BETA index 1 and count is 3
BETA index 1 and count is 2
BETA index 1 and count is 3
BETA index 1 and count is 4
DELTA index 2 and count is 4
DELTA index 2 and count is 1
DELTA index 2 and count is 2
DELTA index 2 and count is 3
过滤后的列表应该是这样的
ALPHa index 0 and count is 0
BETA index 1 and count is 4
DELTA index 2 and count is 3
谁能告诉我如何过滤掉这个?
我的代码如下:
模态类:
class CartItems
String itemname;
int numberofitems;
int index;
CartItems(
this.itemname,
this.numberofitems,
this.index
);
列表
List <CartItems> cartItems = List();
for(int i =0; i < itemList.length; i++)
cartItems.add(CartItems(itemname: itemList[i].itemname, numberofitems: itemList[i].numberofitems,index:index));
【问题讨论】:
【参考方案1】:试试这个代码。 将您的 原始列表 作为参数传递给将返回 filtered CartItems 的方法列表。
List<CartItems> filterList(List<CartItems> itemList)
int currentItemsIndex = 0;
CartItems cartItem;
List < CartItems > cartItems = List();
for(int i =0 ;i< itemList.length; i++)
cartItem = CartItems(itemname: itemList[i].itemname, numberofitems: itemList[i].numberofitems,index:itemList[i].index);
if(currentItemsIndex == itemList[i].index)
if(i == itemList.length-1)
cartItems.add(cartItem);
else
cartItems.add(cartItem);
currentItemsIndex = itemList[i].index;
return cartItems;
【讨论】:
嗯,这基本上返回了作为输入传递的相同列表。但是你的函数给了我一个开始,我修改了代码以获得想要的结果。 for (int i = 0; i 【参考方案2】:这是获取过滤列表的一种方法,每个 itemName 中只有最后一个。
List<CartItems> itemList = ...;
var filteredCartItems = new LinkedHashMap<String, CartItems>();
for (CartItems item in itemList )
filteredCartItems[item.itemName] = item;
【讨论】:
这也有效,只是我必须使用 index 过滤,所以将过滤的CartItems 更改为 new LinkedHashMap以上是关于列表视图使用 Flutter 中的属性过滤掉最后一行数据的主要内容,如果未能解决你的问题,请参考以下文章