deepReverse method

Map<K, V> deepReverse()

Returns new instance of recursively reversed Map. It reverses nested List, Set or Map (primitive collections), nested primitive collections inside nested primitive collections and so on.

Implementation

Map<K, V> deepReverse() {
  final reversedKeys = keys.toList(growable: false).deepReverse();
  var reversedMap = LinkedHashMap.fromIterable(<K>[...reversedKeys],
      key: (k) => k,
      value: (k) {
        if (this[k] is Map) {
          return (this[k] as Map).deepReverse();
        } else if (this[k] is Set) {
          return (this[k] as Set).deepReverse();
        } else if (this[k] is List) {
          return (this[k] as List).deepReverse();
        } else {
          return this[k];
        }
      });

  return reversedMap.cast<K, V>();
}