flutter - 如何转换List <Object> flutter

标签 flutter dart

我是新手,需要帮助:

我已经有

final List<Genres> genres = [{1,"comedy"}, {2,"drama"},{3,"horror"}]

来自api。
class Genres {

  final int id;
  final String value;

  Genres({this.id,this.value});
}

在另一种方法中,我得到genres.id。(2)如何将其转换为genres.value(“戏剧”)?

最佳答案

当您的数据结构是Genre时,从id获取List是不方便的。您别无选择,只能遍历列表并将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。

关于flutter - 如何转换List <Object> flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60397955/

相关文章:

http - 如何通过 Flutter 中的 HTTP api(无推送通知)从后台发送通知?

android - 如何修复 “Cause: invalid type code: 85”错误

sql - 如何在SQL数据库中将带有列表的对象保存为属性

javascript - 如何将 Dart 编译为 JavaScript v 1.3?

Flutter - 如何使水平 ListView 中的每个图像适合屏幕?

listview - 使用回调删除 ListView 项的Flutter/Dart Issue

dart - 在 flutter 中以编程方式关闭模态底部表

flutter - 如何在 flutter 中对齐行和列中的点?

gridview - flutter - 在 gridview 上换行时如何设置宽度?

dart - 进程异常 : Process "C:\..\myapp\android\gradlew.bat" exited abnormally: