flatten method

Map<String, dynamic> flatten({
  1. String separator = '.',
})

Flattens nested maps to dot-notation keys.

{'a': {'b': {'c': 1}}}.flatten() // {'a.b.c': 1}

Implementation

Map<String, dynamic> flatten({String separator = '.'}) {
  final result = <String, dynamic>{};
  void flattenHelper(Map<dynamic, dynamic> map, String prefix) {
    for (final e in map.entries) {
      final key =
          prefix.isEmpty ? e.key.toString() : '$prefix$separator${e.key}';
      if (e.value is Map) {
        flattenHelper(e.value as Map, key);
      } else {
        result[key] = e.value;
      }
    }
  }

  flattenHelper(this, '');
  return result;
}