iTranslated by AI
The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
😳
[Flutter] Precautions when comparing Dart collections
Conclusion
You should avoid comparing Dart collections using ==. It can lead to unexpected bugs.
Instead of using ==, use listEquals, setEquals, and mapEquals.
Trying out collection comparisons
I tried comparing lists, sets, and maps.
Sample code
import 'package:flutter/foundation.dart';
void main() {
final listA = [1, 2, 3, 4, 5];
final listB = [1, 2, 3, 4, 5];
print('listA == listB ${listA == listB}');
print('listEquals(listA, listB) ${listEquals(listA, listB)}');
final setA = {'A', 'B', 'C'};
final setB = {'A', 'B', 'C'};
print('setA == setB ${setA == setB}');
print('setEquals(setA, setB) ${setEquals(setA, setB)}');
final mapA = {1: 'A', 2: 'B', 3: 'C'};
final mapB = {1: 'A', 2: 'B', 3: 'C'};
print('mapA == mapB ${mapA == mapB}');
print('mapEquals(mapA, mapB) ${mapEquals(mapA, mapB)}');
}
Execution results
flutter: listA == listB false
flutter: listEquals(listA, listB) true
flutter: setA == setB false
flutter: setEquals(setA, setB) true
flutter: mapA == mapB false
flutter: mapEquals(mapA, mapB) true
References
Discussion