getPractitioner method Null safety

Future<Practitioner?> getPractitioner(
  1. {required String firebaseUid}
)

Implementation

Future<Practitioner?> getPractitioner(
    {required final String firebaseUid}) async {
  final gqlQueryString = '''
      query FindOne {
        practitioners(
          where: {
            user: {
              firebaseUid: "$firebaseUid"
            }
          }
        ) {
          ${PractitionerGqlEntity.gqlQueryFragment}
        }
      }
    ''';

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

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

    final data = queryResult.data!['practitioners'] as List<dynamic>;

    if (data.isNotEmpty) {
      // merge in all properties from the base user entity
      final practitionerData = data.first as Map<String, dynamic>;
      final practitionerGqlFragment =
          PractitionerGqlEntity.fromJson(practitionerData);

      if (practitionerGqlFragment != null) {
        return practitionerGqlFragment.toPractitioner();
      }
    }
  } catch (e, stackTrace) {
    logger?.e('Could not retrieve practitioner instance from backend', e,
        stackTrace);
  }
  return null;
}