getPatients method Null safety

Future<BuiltList<Patient>> getPatients(
  1. {int offset = 0,
  2. int? limit,
  3. BuiltList<Organization>? organizations}
)

Implementation

Future<BuiltList<Patient>> getPatients({
  final int offset = 0,
  final int? limit,
  BuiltList<Organization>? organizations,
}) async {
  final gqlQueryString = '''
      query Find {
        patients(
          start: $offset
          ${limit == null ? 'limit: $limit' : ''}
          where: {
            ${organizations == null || organizations.isEmpty ? '' : 'managingOrganization_in: [${organizations.map((p0) => p0.id).join(',')}]'}
          }
        ) {
          ${PatientGqlEntity.gqlQueryFragment}
        }
      }
    ''';

  try {
    final queryResult = await graphQLClient.query<void>(QueryOptions(
      document: gql(gqlQueryString),
      fetchPolicy: FetchPolicy.networkOnly,
    ));

    if (queryResult.hasException) {
      logger?.e(queryResult.exception.toString());
      return <Patient>[].toBuiltList();
    }

    final data = (queryResult.data?['patients'] ?? []) as List<dynamic>;
    final l = data
        .map((dynamic e) =>
            PatientGqlEntity.fromJson(e as Map<String, dynamic>))
        .where((element) => element != null)
        .map((element) => element!.toPatient())
        .toBuiltList();
    return l;
  } catch (e, stackTrace) {
    logger?.e(
        'Could not retrieve patient instance from backend', e, stackTrace);
  }

  return <Patient>[].toBuiltList();
}