[英]How to convert List<Object> flutter
我是顫振的新手,需要幫助:
我已經有了
final List<Genres> genres = [{1,"comedy"}, {2,"drama"},{3,"horror"}]
來自 api
class Genres {
final int id;
final String value;
Genres({this.id,this.value});
}
在另一種方法中,我得到了流派.id.(2) 如何將其轉換為流派.值(“戲劇”)?
當您的數據結構是List
時,從id
獲取Genre
方便。 您別無選擇,只能遍歷列表並將id
值與列表中每個元素的id
進行比較:
final id = 2;
final genre = genres.firstWhere((g) => g.id == id, orElse: () => null);
這段代碼的問題在於它很慢並且可能有多個匹配項(第一次找到后的重復項將被忽略)。
更好的方法是在您第一次創建列表時將其轉換為Map
。 之后,您可以簡單地使用索引器快速安全地獲取 ID 的Genre
。
final genresMap = Map.fromIterable(genres, (item) => item.id, (item) => item);
// later...
final id = 2;
final genre = genresMap[id];
這樣,可以保證沒有任何重復,如果 ID 不存在,那么索引器將簡單地返回 null。
您可以遍歷 api 的 json 結果並將它們映射到 Gener 類,如下所示,
void fn(id) {
final gener = geners.firstWhere((gener) => gener['id'] == id);
// now you have access to your gener
}
您可以像這樣在List<Genres>
找到該項目
Genres element = list.firstWhere((element) => element.id == 2); // 2 being the id you give in the question as an exaple. You should make it dynamic
print(element.value);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.