getNeed method Null safety

Future<Need?> getNeed(
  1. {required String id}
)

Retrieves a single need by id. Returns null if need is not found.

Implementation

Future<Need?> getNeed({required String id}) async {
  final gqlQueryString = '''
    query FetchNeed {
      need(id: "$id") {
        ${NeedTypeGqlEntity.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!['need'] as Map<String, dynamic>;

    // translate the incoming JSON objects into needs
    final needGqlEntry = NeedGqlEntity.fromJson(data);

    if (needGqlEntry == null) {
      logger?.e("Could not deserialize calendar entry");
      return null;
    }
    final need = needGqlEntry.toNeed();

    if (!_needsSubject.isClosed) {
      _needsSubject.add([EntityRead(need)].toBuiltList());
    }
    return need;
  } catch (e, stackTrace) {
    logger?.e(
        'Could not find calendar entry by id: ', e.toString(), stackTrace);
    return null;
  }
}