Dart エラー「Unsupported operation: Cannot add to a fixed-length list」が発生した場合の対処法

Dart エラー「Unsupported operation: Cannot add to a fixed-length list」が発生した場合の対処法

Dartで、エラー「Unsupported operation: Cannot add to a fixed-length list」が発生した場合の対処法を記述してます。「filled」で生成したリストに対して、値を追加しようとした際に発生します。

環境

  • OS windows11 home
  • Dart 2.18.4

エラー全文

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

void main() {
  var list = List.filled(5, 0);

  print(list); // [0, 0, 0, 0, 0]

  list.add(1);

  print(list);
}

エラー全文

Unhandled exception:
Unsupported operation: Cannot add to a fixed-length list
#0      FixedLengthListMixin.add (dart:_internal/list.dart:21:5)
#1      main (file:///c:/sample/main.dart:6:8)
#2      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
#3      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

原因

「filled」はデフォルトでは、固定長のリストが生成されるため

対処法

「growable: true」を指定することで可変長に変更することができるの設定する。

void main() {
  var list = List.filled(5, 0, growable: true);

  print(list); // [0, 0, 0, 0, 0]

  list.add(1);

  print(list); // [0, 0, 0, 0, 0, 1]
}