どうも、ちょげ(@chogetarou)です。
MapのfirstWhereメソッドを使う方法を紹介します。
方法

MapでfirstWhereメソッドを使うには、以下のプロパティを使います。
- entriesプロパティ : Mapの要素をMapEntryのコレクションで取得
- keysプロパティ:Mapのキーをコレクションとして取得
- valuesプロパティ:Mapの値をコレクションとして取得
上記の3つのプロパティに、firstWhereメソッドを呼び出す前に、アクセスします。
そして、firstWhereメソッドの第1引数に条件式を返すコールバック関数を指定します。
また、必要であれば、2引数「orElse」に見つからなかった際の代わりの値を返す関数を指定します。
map.entries.firstWhere((entry) => 条件式, orElse: ()=> MapEntry(・・・));
map.keys.firstWhere((key) => 条件式, orElse: ()=> null);
map.values.firstWhere((value) => 条件式, orElse: ()=> null);
entries、keys、valuesのプロパティにアクセスすることで、firstWhereメソッドが使えるようになります。
使用例
void main() {
var numbers = {
'One' : 1,
'Two' : 2,
'Three' : 3,
'Four' : 4,
'Five' : 5,
};
var find = numbers.entries.firstWhere(
(entry) => entry.key.contains('o') || entry.value > 2,
orElse : () => MapEntry('Zero', 0)
);
print(find); //MapEntry(Two: 2)
var findKey = numbers.keys.firstWhere((key) => key.length > 4);
print(findKey); //Three
var findValue = numbers.values.firstWhere((value) => value % 3 == 0);
print(findValue); //3
}
コメント