execute method

Future<PreloadExecutionResult> execute({
  1. ProviderContainer? container,
})

执行预加载

Implementation

Future<PreloadExecutionResult> execute({ProviderContainer? container}) async {
  _log('[EXECUTE] ========== 预加载开始执行 ==========');
  _log('[EXECUTE] 当前注册任务数: ${_registeredTasks.length}');

  if (_registeredTasks.isEmpty) {
    _log('[EXECUTE] 没有注册任务,直接返回成功');
    return const PreloadExecutionResult(
      result: PreloadResult.success,
      completedTasks: 0,
      failedTasks: 0,
      totalTasks: 0,
      failedTaskDetails: {},
      executionTime: Duration.zero,
    );
  }

  if (_tracker.state == PreloadManagerState.running) {
    _log('[EXECUTE] 预加载已在进行中,抛出异常');
    throw PreloadException('预加载已在进行中');
  }

  _log('[EXECUTE] 状态设置为: running');

  try {
    final result = await _getEngine().execute(
      _registeredTasks,
      container: container,
    );

    _log('[EXECUTE] ========== 预加载执行完成 ==========');
    _log(
      '[EXECUTE] 结果: ${result.result}, '
      '成功: ${result.completedTasks}, '
      '失败: ${result.failedTasks}, '
      '耗时: ${result.executionTime.inMilliseconds}ms',
    );

    return result;
  } catch (e) {
    _logError('[EXECUTE] 预加载执行失败', e);

    if (_config.onError != null) {
      _config.onError!(e, StackTrace.current);
    }

    return PreloadExecutionResult(
      result: PreloadResult.failed,
      completedTasks: 0,
      failedTasks: _registeredTasks.length,
      totalTasks: _registeredTasks.length,
      failedTaskDetails: {e.toString(): e},
      executionTime: Duration.zero,
    );
  }
}