目的
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つ目の方が構文がわかりやすいかな。速度はどちらが早いか実験する根性はない、、、