Skip to main content

prefer-unmodifiable-of

effort: 2m
dart 3.13+
has IDE fix
has auto-fix
pro+

Suggests using .unmodifiableOf() instead of .unmodifiable().

.unmodifiableOf() constructors have slightly better typings and accept a generic type instead of dynamic.

Example

❌ Bad:

const array = [1, 2, 3, 4, 5, 6, 7, 8, 9];

// LINT: Prefer '.unmodifiableOf' instead of 'unmodifiable'.
final copy = List<int>.unmodifiable(array);
// LINT: Prefer '.unmodifiableOf' instead of 'unmodifiable'.
final numList = List<num>.unmodifiable(array);

const map = {"hi": 1};

// LINT: Prefer '.unmodifiableOf' instead of 'unmodifiable'.
final copy = Map<String, int>.unmodifiable(map);
// LINT: Prefer '.unmodifiableOf' instead of 'unmodifiable'.
final numMap = Map<String, num>.unmodifiable(map);

✅ Good:

const array = [1, 2, 3, 4, 5, 6, 7, 8, 9];

final copy = List<int>.unmodifiableOf(array);
final numList = List<num>.unmodifiableOf(array);

const map = {"hi": 1};

final copy = Map<String, int>.unmodifiableOf(map);
final numMap = Map<String, num>.unmodifiableOf(map);