hashIterable method
Implementation
int hashIterable(
final Iterable<dynamic> iterable, {
final int deep = 0,
final bool debug = false,
}) {
int iterated = iterable.fold(-1, (final int h, final dynamic i) {
int hash;
if (i is List) {
hash = hashIterable(i, deep: deep + 1, debug: debug);
} else if (i is Map) {
hash = hashIterable(i.values, deep: deep + 1, debug: debug);
} else if (i == null) {
hash = -2;
} else {
hash = i.hashCode;
}
int comb = combine(h, hash);
if (kDebugMode) {
if (debug) {
print(
'${' ' * deep * 2}h: $h => '
'(${i.runtimeType}) $i: $hash => comb: $comb',
);
}
}
return comb;
});
int finished = finish(iterated);
if (kDebugMode) {
if (debug) {
print('finish: $finished');
}
}
return finished;
}