我有个问题伙计们。有一个listView用于显示从api获取的列表。因此,我对它实现了filtering函数,它运行得很好。我遇到的问题是,当我点击筛选的列表项时,索引值在我的listTile onTap方法中往往会发生变化。如何保持原来的列表索引结构,即使经过过滤,并确保它的工作良好的攻丝。
FutureBuilder(
builder: (BuildContext context, AsyncSnapshot snapshot) {
return Expanded(
child: ListView.builder(
primary: false,
shrinkWrap: true,
itemCount: filteredList.length,
itemBuilder: (context, index) {
//index value and structure changes while filtering
return Padding(
padding: const EdgeInsets.all(10.0),
child: Container(
decoration: BoxDecoration(
color: HexColor("#F5F5F5"),
borderRadius:
BorderRadius.circular(
16.0)),
child: ListTile(
onTap: () => {
showFundModal(index)},
//when I tap on a listView item while filtered, the index not correct
contentPadding: const EdgeInsets.all(8.0),);
发布于 2020-05-23 22:03:21
您可以保留两个列表,一个包含所有的项,另一个包含筛选的项或要显示的项。列表项的数据模型应该具有id字段,该字段可以用于标识项,并且可以使用id来操作数据。您可以检查列表的json表示形式。
allData = [
{ 'id' : 0, 'title': Card 1'},
{ 'id' : 1, 'title': Card 2'}
]filterdData = [
{ 'id' : 0, 'title': Card 1'},
]https://stackoverflow.com/questions/61976595
复制相似问题