flattenMap method
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;
}