execute<T> static method
void
execute<T>({
- required BuildContext context,
- required Future<
T> action(), - required dynamic onSuccess(
- T result
- dynamic onError(
- Object error
- dynamic onComplete()?,
- String? errorMessage,
Implementation
static void execute<T>({
required BuildContext context,
required Future<T> Function() action,
required Function(T result) onSuccess,
Function(Object error)? onError,
Function()? onComplete,
String? errorMessage,
}) {
context.loaderOverlay.show();
action().then((result) {
if (context.mounted) {
context.loaderOverlay.hide();
onSuccess(result);
}
}).catchError((error) {
if (context.mounted) {
context.loaderOverlay.hide();
if (errorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(errorMessage),
backgroundColor: Colors.red,
),
);
}
onError?.call(error);
}
}).whenComplete(() {
if (context.mounted) {
context.loaderOverlay.hide();
onComplete?.call();
}
});
}