我在這里有一個 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());
}
)
它將任務串列作為日歷中的彩色塊容器回傳,如下所示:

問題是每當我導航到日歷中的另一個月份時,FutureBuilder 都會再次從 web 服務中獲取資料,每次我更改月份時都會重復這些任務:

這是我在幾個月之間導航的函式代碼:
_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 在更改月份時獲取資料,因為最終目標是顯示所選日期的任務。
但是我想要的是有一種方法來抑制我在幾個月之間導航時從上一次獲取中構建的容器,
謝謝你的幫助:)
uj5u.com熱心網友回復:
您的代碼沒有顯示您如何在FututrBuilder??
我懷疑您每次使用setState( ).
解決方案:list在buid( )方法開始時重置您的任務
@override Widget build(BuildContext context) {
yourTaskList = [] //if an array or adjust if other type
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/318779.html
上一篇:在函式中回傳新承諾與直接在async/await中使用新承諾?
下一篇:jsx內部的異步函式呼叫
