フィールド変数からリストの位置を特定する
indexWhere
を使う
// 自作クラス(例)
class Dog {
Dog({required this.id, required this.name});
int id;
String name;
@override
String toString() {
return '{id=$id, name=$name}';
}
}
----
final dogList = <Dog>[
Dog(id: 4, name: 'Shiro'),
Dog(id: 1, name: 'Pochi'),
Dog(id: 3, name: 'Cha'),
Dog(id: 2, name: 'Kuro'),
];
// 位置を特定したいID
final targetId = 2;
int index = dogList.indexWhere((item) => item.id == targetId);
print('位置 $index');
// 位置 3
※ indexOf
だと自作クラスを指定しなければならない。IDだけしか使えないような状況でリストの位置を特定したい場合に便利!
絞り込み
where
を使う
final dogList = <Dog>[
Dog(id: 4, name: 'Shiro'),
Dog(id: 1, name: 'Pochi'),
Dog(id: 3, name: 'Cha'),
Dog(id: 2, name: 'Kuro'),
];
// idが2より大きいもので絞り込む
final filter = dogList.where((item) => 2 < item.id);
print('result $filter');
// result ({id=4, name=Shiro}, {id=3, name=Cha})
並び替え
sort
を使って、compareTo
で並び替えたい順番を記述する
final dogList = <Dog>[
Dog(id: 4, name: 'Shiro'),
Dog(id: 1, name: 'Pochi'),
Dog(id: 3, name: 'Cha'),
Dog(id: 2, name: 'Kuro'),
];
// idで大きい順に並び替える
dogList.sort((a, b) => b.id.compareTo(a.id));
print('result $dogList');
// result [{id=4, name=Shiro}, {id=3, name=Cha}, {id=2, name=Kuro}, {id=1, name=Pochi}]
参考
環境
- Android Studio フラミンゴ
- Flutter: 3.10.6
- Dart: 3.0.6