getListFromJson<T extends Data> function

Future<List<T>> getListFromJson<T extends Data>(
  1. Map<String, dynamic> json,
  2. FutureOr<T?> converter(
    1. Map<String, dynamic>
    ), {
  3. String? objName,
})

Helper function to parse a List of Data Objects from a Json-Map

Implementation

Future<List<T>> getListFromJson<T extends Data>(Map<String, dynamic> json,
    FutureOr<T?> Function(Map<String, dynamic>) converter,
    {String? objName}) async {
  try {
    List<dynamic> str = (objName != null) ? json[objName] : json;
    return List<T>.from(
        (await Future.wait(str.map((elem) async => await converter(elem))))
            .whereType<T>());
  } catch (e) {
    debugPrint(
        'could not parse response: ' + e.toString() + '<--' + jsonEncode(json));
    throw BackendCommunicationException(
        S.current!.couldNotParseResponse + jsonEncode(json));
  }
  //return [];
}