首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >过滤时ListView.builder索引未保留在listTile onTap中

过滤时ListView.builder索引未保留在listTile onTap中
EN

Stack Overflow用户
提问于 2020-05-23 18:16:49
回答 1查看 57关注 0票数 1

我有个问题伙计们。有一个listView用于显示从api获取的列表。因此,我对它实现了filtering函数,它运行得很好。我遇到的问题是,当我点击筛选的列表项时,索引值在我的listTile onTap方法中往往会发生变化。如何保持原来的列表索引结构,即使经过过滤,并确保它的工作良好的攻丝。

代码语言:javascript
运行
复制
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),

);

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-23 22:03:21

您可以保留两个列表,一个包含所有的项,另一个包含筛选的项或要显示的项。列表项的数据模型应该具有id字段,该字段可以用于标识项,并且可以使用id来操作数据。您可以检查列表的json表示形式。

代码语言:javascript
运行
复制
allData = [
  { 'id' : 0, 'title': Card 1'},
  { 'id' : 1, 'title': Card 2'}
]
代码语言:javascript
运行
复制
filterdData = [
  { 'id' : 0, 'title': Card 1'},
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61976595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档