suggestionRowsFromResultset function

List<Map<String, dynamic>> suggestionRowsFromResultset(
  1. dynamic resultset
)

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();
}