如何在 Flutter 中重新加载 FutureBuilder?
How to reload a FutureBuilder in Flutter?
我这里有一个 FutureBuilder :
FutureBuilder<List<Task>>(
future:
getTasks(),
builder: (BuildContext context, AsyncSnapshot<List<Task>> snapshot){
if(snapshot.hasError){
return const Text('Erreur');
}
if(snapshot.hasData){
return ListView(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
children: taskList.map((e) => TaskContainer(
task: e
)).toList(),
);
}
return const Center(child: CircularProgressIndicator());
}
)
其中 return 任务列表作为日历中的彩色块容器,如下所示:
问题是每当我导航到日历中的另一个月份时,FutureBuilder 会再次从网络服务中获取数据,每次我更改月份时都会重复任务:
这是我在月份之间导航的函数代码:
_toPreviousMonth(){
setState(() {
datess.clear();
dayss.clear();
startMonth = new DateTime(startMonth.year, startMonth.month - 1, 1);
});
}
_toNextMonth(){
setState(() {
datess.clear();
dayss.clear();
startMonth = new DateTime(startMonth.year, startMonth.month + 1, 1);
});
}
其实我不介意 FutureBuilder 在我更改月份时获取数据,因为最终目标是显示所选日期的任务。
但我想要的是有一种方法可以在我在几个月之间导航时抑制从上一次获取中构建的容器,
感谢您的帮助:)
您的代码没有显示您如何在 FututrBuilder
??
中使用快照
我怀疑您每次使用 setState( )
重新构建时都将任务直接添加到列表中。
解决方案:在buid( )
方法
的开头重置您的任务list
@override Widget build(BuildContext context) {
yourTaskList = [] //if an array or adjust if other type
我这里有一个 FutureBuilder :
FutureBuilder<List<Task>>(
future:
getTasks(),
builder: (BuildContext context, AsyncSnapshot<List<Task>> snapshot){
if(snapshot.hasError){
return const Text('Erreur');
}
if(snapshot.hasData){
return ListView(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
children: taskList.map((e) => TaskContainer(
task: e
)).toList(),
);
}
return const Center(child: CircularProgressIndicator());
}
)
其中 return 任务列表作为日历中的彩色块容器,如下所示:
问题是每当我导航到日历中的另一个月份时,FutureBuilder 会再次从网络服务中获取数据,每次我更改月份时都会重复任务:
这是我在月份之间导航的函数代码:
_toPreviousMonth(){
setState(() {
datess.clear();
dayss.clear();
startMonth = new DateTime(startMonth.year, startMonth.month - 1, 1);
});
}
_toNextMonth(){
setState(() {
datess.clear();
dayss.clear();
startMonth = new DateTime(startMonth.year, startMonth.month + 1, 1);
});
}
其实我不介意 FutureBuilder 在我更改月份时获取数据,因为最终目标是显示所选日期的任务。
但我想要的是有一种方法可以在我在几个月之间导航时抑制从上一次获取中构建的容器,
感谢您的帮助:)
您的代码没有显示您如何在 FututrBuilder
??
我怀疑您每次使用 setState( )
重新构建时都将任务直接添加到列表中。
解决方案:在buid( )
方法
list
@override Widget build(BuildContext context) {
yourTaskList = [] //if an array or adjust if other type