suggestionRowsFromResultset function
Normalizes a GenericSuite resultset into a list of row maps.
Listing endpoints often send a JSON string (see CrudEditor._loadItems);
FDA-style endpoints send an already-decoded list.
Implementation
List<Map<String, dynamic>> suggestionRowsFromResultset(dynamic resultset) {
dynamic raw = resultset;
if (raw == null) {
return <Map<String, dynamic>>[];
}
if (raw is String) {
if (raw.isEmpty) {
return <Map<String, dynamic>>[];
}
try {
raw = jsonDecode(raw);
} catch (_) {
return <Map<String, dynamic>>[];
}
}
if (raw is Map) {
final dynamic nested = raw['resultset'] ?? raw['rows'] ?? raw['items'];
if (nested != null && !identical(nested, raw)) {
return suggestionRowsFromResultset(nested);
}
return <Map<String, dynamic>>[];
}
if (raw is! List) {
return <Map<String, dynamic>>[];
}
return raw
.whereType<Map>()
.map((item) => Map<String, dynamic>.from(item))
.toList();
}