getOrOpen<R> method
Mutation<R>
getOrOpen<R>(
- MutationKey<
R> key, { - MutationInitialDataCallback<
R> ? initialData, - MutationMutateCallback<
R> ? initialMutate, - MutationOnUpdateDataCallback<
R> ? onUpdateData, - MutationOnUpdateErrorCallback? onUpdateError,
- MutationOnUpdateInitializedCallback? onUpdateInitialized,
- MutationOnUpdateLoadingCallback? onUpdateLoading,
- MutationOnOpenCallback<
R> ? onOpen, - MutationOnCloseCallback<
R> ? onClose, - List<
MutationKey< observeKeys = const [],R> >
Implementation
Mutation<R> getOrOpen<R>(MutationKey<R> key,
{MutationInitialDataCallback<R>? initialData,
MutationMutateCallback<R>? initialMutate,
MutationOnUpdateDataCallback<R>? onUpdateData,
MutationOnUpdateErrorCallback? onUpdateError,
MutationOnUpdateInitializedCallback? onUpdateInitialized,
MutationOnUpdateLoadingCallback? onUpdateLoading,
MutationOnOpenCallback<R>? onOpen,
MutationOnCloseCallback<R>? onClose,
List<MutationKey<R>> observeKeys = const []}) {
var mutation = _data[key] as Mutation<R>?;
if (mutation == null) {
mutation = Mutation<R>(key,
initialData: initialData,
initialMutate: initialMutate,
onUpdateData: onUpdateData,
onUpdateError: onUpdateError,
onUpdateInitialized: onUpdateInitialized,
onUpdateLoading: onUpdateLoading,
onClose: onClose);
_onEventMapListMap[EventKey.OPEN]?[key]?.forEach((e) {
final res = e(mutation);
if (res != null) {
final cancelFunc = mutation!.observe(
onClose: (mutation) {
res();
},
attach: false);
_getOrNewInitialFunctionList(key).add(cancelFunc);
}
});
for (var observeKey in observeKeys) {
_onEventMapListMap[EventKey.OPEN]?[observeKey]?.forEach((e) {
final res = e(mutation);
if (res != null) {
final cancelFunc = mutation!.observe(
onClose: (mutation) {
res();
},
attach: false);
_getOrNewInitialFunctionList(key).add(cancelFunc);
}
});
}
if (onOpen != null) {
final res = onOpen(mutation);
if (res != null) {
final cancelFunc = mutation.observe(
onClose: (mutation) {
res();
},
attach: false);
_getOrNewInitialFunctionList(key).add(cancelFunc);
}
}
final cancelFunc = mutation.observe(
onUpdateData: (data, {before}) {
_onUpdateData(key, data, before: before);
for (var observeKey in observeKeys) {
_onUpdateData(observeKey, data, before: before);
}
},
onUpdateError: (error, {before}) {
_onUpdateError(key, error, before: before);
for (var observeKey in observeKeys) {
_onUpdateError(observeKey, error, before: before);
}
},
onUpdateInitialized: () {
_onUpdateInitialized(key);
for (var observeKey in observeKeys) {
_onUpdateInitialized(observeKey);
}
},
onUpdateLoading: (loading) {
_onUpdateLoading(key, loading);
for (var observeKey in observeKeys) {
_onUpdateLoading(observeKey, loading);
}
},
onClose: (mutation) {
_onClose(key, mutation);
for (var observeKey in observeKeys) {
_onClose(observeKey, mutation);
}
},
attach: false);
_getOrNewInitialFunctionList(key).add(cancelFunc);
_data[key] = mutation;
_retainCount[key] = 0;
}
return mutation;
}