addObserve<R> method
MutationCancelFunction
addObserve<R>(
- MutationKey<
R> key, { - MutationOnUpdateDataCallback<
R> ? onUpdateData, - MutationOnUpdateErrorCallback? onUpdateError,
- MutationOnUpdateInitializedCallback? onUpdateInitialized,
- MutationOnUpdateLoadingCallback? onUpdateLoading,
- MutationOnOpenCallback<
R> ? onOpen, - MutationOnCloseCallback<
R> ? onClose, - dynamic initialCall = false,
Implementation
MutationCancelFunction addObserve<R>(MutationKey<R> key,
{MutationOnUpdateDataCallback<R>? onUpdateData,
MutationOnUpdateErrorCallback? onUpdateError,
MutationOnUpdateInitializedCallback? onUpdateInitialized,
MutationOnUpdateLoadingCallback? onUpdateLoading,
MutationOnOpenCallback<R>? onOpen,
MutationOnCloseCallback<R>? onClose,
initialCall = false}) {
if (onUpdateData != null) {
if (initialCall) {
onUpdateData(key.data, before: key.data);
}
final list = _getOrNewMapList(EventKey.DATA, key);
list.insert(0, onUpdateData);
}
if (onUpdateError != null) {
if (initialCall) {
onUpdateError(key.error, before: key.error);
}
final list = _getOrNewMapList(EventKey.ERROR, key);
list.insert(0, onUpdateError);
}
if (onUpdateInitialized != null) {
if (initialCall) {
if (key.isInitialized) {
onUpdateInitialized();
}
}
final list = _getOrNewMapList(EventKey.INITIALIZED, key);
list.insert(0, onUpdateInitialized);
}
if (onUpdateLoading != null) {
if (initialCall) {
onUpdateLoading(key.isLoading);
}
final list = _getOrNewMapList(EventKey.LOADING, key);
list.insert(0, onUpdateLoading);
}
if (onOpen != null) {
final list = _getOrNewMapList(EventKey.OPEN, key);
list.insert(0, onOpen);
}
if (onClose != null) {
final list = _getOrNewMapList(EventKey.CLOSE, key);
list.insert(0, onClose);
}
return () {
removeObserve(key,
onUpdateData: onUpdateData,
onUpdateError: onUpdateError,
onUpdateInitialized: onUpdateInitialized,
onUpdateLoading: onUpdateLoading,
onOpen: onOpen,
onClose: onClose);
};
}