flattenMap method

Map<String, String> flattenMap(
  1. Map<String, dynamic> nested, {
  2. String prefix = '',
})

Flattens a nested map into dot-notation keys.

This utility method converts nested structures like:

{
  "user": {
    "greeting": "Hello",
    "profile": {
      "name": "Name: {0}"
    }
  }
}

Into flat keys:

{
  "user.greeting": "Hello",
  "user.profile.name": "Name: {0}"
}

Implementation

Map<String, String> flattenMap(Map<String, dynamic> nested, {String prefix = ''}) {
  final result = <String, String>{};

  nested.forEach((key, value) {
    final fullKey = prefix.isEmpty ? key : '$prefix.$key';

    if (value is Map<String, dynamic>) {
      result.addAll(flattenMap(value, prefix: fullKey));
    } else if (value is List) {
      for (int i = 0; i < value.length; i++) {
        final item = value[i];
        if (item is Map<String, dynamic>) {
          result.addAll(flattenMap(item, prefix: '$fullKey[$i]'));
        } else {
          result['$fullKey[$i]'] = item.toString();
        }
      }
    } else {
      result[fullKey] = value.toString();
    }
  });

  return result;
}