setData method
T
setData(
- T value, {
- DateTime? updatedAt,
- bool manual = true,
- ResolvedQueryOptions<
T> ? resolved,
Stores successful value and returns the structurally shared result.
Implementation
T setData(
T value, {
DateTime? updatedAt,
bool manual = true,
ResolvedQueryOptions<T>? resolved,
}) {
final dataOptions = resolved ?? options;
final T merged;
if (dataOptions.merge case final merge?) {
merged = merge(state.hasData ? state.data : null, value);
} else if (dataOptions.structuralSharing) {
final shared = structurallyShare(
state.hasData ? state.data : null,
value,
);
merged = shared is T ? shared : value;
} else {
merged = value;
}
_setState(
state.copyWith(
status: QueryStatus.success,
fetchStatus: manual ? state.fetchStatus : QueryFetchStatus.idle,
hasData: true,
data: merged,
dataUpdatedAt: updatedAt ?? client.scheduler.now(),
error: null,
errorStackTrace: null,
dataUpdateCount: state.dataUpdateCount + 1,
fetchFailureCount: manual ? state.fetchFailureCount : 0,
fetchFailureReason: manual ? state.fetchFailureReason : null,
isInvalidated: false,
fetchMeta: manual ? state.fetchMeta : null,
),
);
return merged;
}