Dart エラー「Bad state: No element ListMixin.firstWhere」が発生した場合の対処法

Dart エラー「Bad state: No element ListMixin.firstWhere」が発生した場合の対処法

Dartで、エラー「Bad state: No element ListMixin.firstWhere」が発生した場合の対処法を記述してます。「firstWhere」で条件が一致するものがなかった場合に発生します。

環境

  • OS windows11 home
  • Dart 2.18.1

エラー全文

以下のコードを実行時に発生。

void main() {
  var list = ['aaa', 'bbb', 'ccc', 'bbb', 'aaa'];

  print(list.firstWhere((v) => v.startsWith('f')));  
}

エラー全文

Unhandled exception:
Bad state: No element
#0      ListMixin.firstWhere (dart:collection/list.dart:167:5)
#1      main (file:///c:/sample/main.dart:4:14)
#2      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
#3      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

原因

「firstWhere」で条件が一致するものがない場合はエラーとなってしまいます。

対処法

「orElse」で条件に一致するものがなかった場合に返す値を指定します。

void main() {
  var list = ['aaa', 'bbb', 'ccc', 'bbb', 'aaa'];

  print(list.firstWhere((v) => v.startsWith('f'),orElse: () => '存在しません'));
  // 存在しません
}