getNeed method Null safety
- {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;
}
}