[英]How to update future of future builder
假設我有一個 FutureBuilder,它的 future 是 getBusinessListByRating(),它會調用 API 以獲取按評級排序的 BusinessList。 然后我按一個按鈕按字母順序對列表進行排序。 當我這樣做時,我希望未來成為 getBusinessListByAlpha() 並重新呈現。
我怎樣才能做到這一點?
我嘗試使用 setState 來更新未來,但它不起作用。
在你的 state class 你應該像這樣初始化未來:
Future getBusinessListFuture;
@override
void initState() {
super.initState();
getBusinessListFuture = getBusinessListByRating(rating);
}
在你的 FutureBuilder 中:
FutureBuilder(
future: getBusinessListFuture,
builder: ....
)
單擊按鈕更新未來:
onTap: () {
setState(() {
getBusinessListFuture = getBusinessListByRating(alphabetical);
});
}
這應該更新未來並重建小部件。
有一個方法取而代之的參數,只是改變參數怎么樣。 然后讓 function 調用您的特定輔助方法。
就像是:
enum BusinessListOrdering {
rating,
alpha,
score
}
getBusinessListBy(BusinessListOrdering order) {
switch (order) {
case BusinessListOrdering.rating:
return getBusinessListByRating();
case BusinessListOrdering.alpha:
return getBusinessListByAlpha();
case BusinessListOrdering.score:
return getBusinessListByScore();
default:
return getBusinessListByRating();
}
}
因此,當您按下按鈕時,您為小部件中的枚舉變量設置了 state。
onPressed: () {
setState(() {
order = BusinessListOrdering.alpha;
});
},
FutureBuilder 改為調用:
getBusinessListBy(order)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.