簡體   English   中英

如何更新未來建設者的未來

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM