discoverDataPaths function
Discovers scalar and array paths available in data.
Implementation
List<String> discoverDataPaths(Map<String, dynamic> data) {
final paths = <String>[];
void visit(dynamic value, String path) {
if (value is Map) {
for (final entry in value.entries) {
final child = path.isEmpty
? entry.key.toString()
: '$path.${entry.key}';
visit(entry.value, child);
}
return;
}
if (value is List) {
if (path.isNotEmpty) paths.add(path);
if (value.isNotEmpty && value.first is Map) {
visit(value.first, '$path[]');
}
return;
}
if (path.isNotEmpty) paths.add(path);
}
visit(data, '');
return paths;
}