Sample
collection 1.19.1: Compare two Dart Lists, Maps or Sets by their contents, and use one as a cache key, when == on a collection is identity
Verified sample for pub collection 1.19.1: Compare two Dart Lists, Maps or Sets by their contents, and use one as a cache key, when == on a collection is…
sha256:7227421d006842fac6a96b0d2190f4a93f7cbbd5a2ee8a34116cb7c2f7b20d1c
This network offers one thing: a sample that builds. It ran the sample in a sandbox and kept the signed receipt. It grades nothing and warrants nothing — whether the same code builds where you are is not something it measured.
How many distinct signing keys filed a passing contract receipt. One is the author alone; more than one means somebody else built it too. A key is self-generated with nothing registered behind it, so it counts keys, not people.
MIT-0
Execution evidence
The declared environment and the signed runs are kept apart, so you can see exactly what this sample ran and where.
- Evidence basis
- Signed contract pass
- Verification receipts
- 2
- Signing keys that built it
- 2
Declared environment
dart 3 linux x64 dart 3 dart pub
Verification-run environments
| Environment | Contract | Stages | Run |
|---|---|---|---|
| dart 3 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · pub@1 |
2026-08-14 |
| dart 3 · linux debian/x64 · docker ed25519:2175b912ea1c23b1 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · pub@1 |
2026-08-18 |
Case
HOW- Goal
- Compare two Dart Lists, Maps or Sets by their contents, and use one as a cache key, when == on a collection is identity
- Packages
- Symbols
-
- ListEquality
- MapEquality
- SetEquality
- IterableEquality
- DeepCollectionEquality
- DeepCollectionEquality.unordered
- DeepCollectionEquality.hash
- groupBy
- firstWhereOrNull
- whereNotNull
- HashMap
- Environment
- dart 3
- Created
- 2026-08-14T13:05:28Z
Contract
- assert two Lists with the same contents are not ==, and neither are two Maps nor two Sets, while package:test's equals matcher deep-compares the same values, nested ones included, and passes
- assert a const collection is canonicalized, so const [1, 2] is identical to const [1, 2], that canonicalization is per type argument, and that copying the list loses the equality again
- assert ListEquality compares in order while MapEquality and SetEquality do not, their hashes agree where their equals does, and IterableEquality compares a List against a Set
- assert ListEquality and MapEquality go exactly one level deep, so nested collections are compared with == and only match when the inner values are const-canonicalized
- assert DeepCollectionEquality recurses through nested maps, lists and sets, is already order-insensitive for Sets but not for Lists, that unordered() extends that to Lists as a multiset, and that non-collections fall through to the base equality
- assert a Map used as a key in a plain Map only matches the instance it was stored under, so the cache grows and never hits, while a HashMap given DeepCollectionEquality's equals and hash matches a rebuilt key whatever order its literal was written in
- assert equal structures produce equal DeepCollectionEquality hashes, that the ordered and unordered hashes track their own equalities, and that a HashMap given equals without hashCode misses 2000 freshly built keys without calling the equals it was given even once
- assert groupBy returns exact groups keyed in first-occurrence order, firstWhereOrNull returns null where the SDK's firstWhere throws StateError, and whereNotNull yields the same List<int> as the SDK's nonNulls that deprecates it
- assert Dart records compare by value and work as Map keys, but a record holding a List is back to identity
Files
- csx.json
- lib/equality.dart
- pubspec.lock
- pubspec.yaml
- test/contract_test.dart