getQuestionnaire method Null safety

Future<Questionnaire?> getQuestionnaire(
  1. String canonicalUrl
)

Implementation

Future<fhir.Questionnaire?> getQuestionnaire(String canonicalUrl) async {
  final gqlQueryString = '''
    query FetchQuestionnaire {
      questionnaires(where: { url: "$canonicalUrl" }) {
        ${QuestionnaireGqlEntity.gqlQueryFragment}
      }
    }
  ''';

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

    if (queryResult.hasException) {
      logger?.e(queryResult.exception.toString());
      return null;
    }

    final data = queryResult.data!['questionnaires'] as List<dynamic>;
    final q = data
        .map((dynamic e) =>
            QuestionnaireGqlEntity.fromJson(e as Map<String, dynamic>))
        .where((element) => element != null)
        .map((e) => e!.toQuestionnaire())
        .first;

    return q;
  } catch (e, stackTrace) {
    logger?.e('Could not find questionnaire $canonicalUrl: ', e.toString(),
        stackTrace);
    return null;
  }
}