Flutter 如何重置ListView.Builder索引
此代码在第一次执行时调用API和 加载名为task的类以及15天内的所有任务。 过去7天,今天和未来7天。这个JSON文件 是按日期排序的,因此我可以列出所有用户的日期 在那一段时间里有。因此,第一批具有 较老的日期 根据这些日期,我创建了一个按钮菜单,用户可以 通过选择日期,选择他们想要查看的任务 下次调用时,方法getTasks()不会 再调用API,它只使用以前加载的JSON 不幸的是,由于 索引变量的值一直在更改,对于我的 利益ListView.builder试图提高效率不会 始终将索引重置为0 那么这部分代码Flutter 如何重置ListView.Builder索引,flutter,Flutter,此代码在第一次执行时调用API和 加载名为task的类以及15天内的所有任务。 过去7天,今天和未来7天。这个JSON文件 是按日期排序的,因此我可以列出所有用户的日期 在那一段时间里有。因此,第一批具有 较老的日期 根据这些日期,我创建了一个按钮菜单,用户可以 通过选择日期,选择他们想要查看的任务 下次调用时,方法getTasks()不会 再调用API,它只使用以前加载的JSON 不幸的是,由于 索引变量的值一直在更改,对于我的 利益ListView.builder试图提高效率不会 始终将索引
child: FutureBuilder(
future: getTasks(),
builder: (context, snapshot) {
if (task != null && task.tasks.length > 0) {
return ListView.builder(
shrinkWrap: true,
itemCount: task.tasks.length,
itemBuilder: (context, index) {
return task.tasks[index].start_date == selecteddate
? TarefaCard(
width: MediaQuery.of(context).size.width * 0.8,
title: task.tasks[index].description,
howlong: task.tasks[index].howlong_str,
icon: Icon(icons[0]),
indice: index,
onPress: _setActiveTask )
: Container();
},
);
} else {
return Center(
child: CircularProgressIndicator(),
);
}
}),
失败且不显示与所选日期相关的任务
应该如此
因为用户浏览文件到索引的最后日期
很高,现在如果他试图看到第一个日期,指数也太高了
高和[索引]。开始日期不等于selecteddate
我如何重置此变量,或者我的方法完全错误
并且应该完全不同地实现?不要在itemBuilder中检查开始日期
,而是计算一个filteredTasks
并在ListView中使用它:
return task.tasks[index].start_date == selecteddate
如果你只是检查开始日期,我不明白索引与你的问题有什么关系。任务是按日期排序的,因此我可以为该用户建立一个不同日期的列表。我创建了一个按钮菜单,其中包含用户选择日期的列表。由于列表是按日期排序的,因此索引越低,日期越低。当他们浏览到列表顶部时,索引会变得更高。因此,如果他选择了第一个日期,代码的这一部分将发现列表开头的日期不接近末尾。我说得很清楚?我建议您在itemBuilder之外进行过滤,例如var filteredTasks=tasks.where(task=>task.start\u date==selecteddate)
然后在您的列表视图中使用filteredTasks它就是这样工作的。回答这个问题,这样我就可以接受了。
var filteredTasks = tasks.where((task) => task.start_date == selecteddate)