[Dart] unmodifiableなListの項目を削除したい

目的

FlutterでFreezedを使っていると、Listはunmodifiableになります。そのリストの要素を削除するときの処理はどうすればよいかな、と考えたメモです。もちろん、unmodifiableなListを変更するのではなく、unmodifiableなListから新しいListを生成するだけです。新しいListを元の項目に設定し直します。

サンプルコード

イメージ的には、住所リスト addresses の中の指定のaddressが有ったら削除する、という感じです。

一度unmodifiableでないListに変換して生成

var newList = [
	...List.of(addresses)
      ..removeWhere(
      (e) => e == address)
]

unmodifiableListの一部から新しいListを生成

int index = addresses.indexOf(address);
var newList =  [
  ...addresses.getRange(0, index),
  ...addresses.getRange(index + 1, addresses.length)
]

まとめ

unmodifiableなListからデータを削除する方法を考えました。1つ目の方が構文がわかりやすいかな。速度はどちらが早いか実験する根性はない、、、