executeWithLoadingDelay<T> function

Future<T> executeWithLoadingDelay<T>({
  1. required Future<T> action(),
  2. required Duration delay,
  3. required void onLoadingChange(
    1. bool loading
    ),
})

包装一个异步操作,自动处理 loading 延迟

Implementation

Future<T> executeWithLoadingDelay<T>({
  required Future<T> Function() action,
  required Duration delay,
  required void Function(bool loading) onLoadingChange,
}) async {
  final controller = LoadingDelayController(
    delay: delay,
    onLoadingChange: onLoadingChange,
  );

  controller.startLoading();

  try {
    final result = await action();
    controller.endLoading();
    return result;
  } catch (e) {
    controller.endLoading();
    rethrow;
  }
}