initialize method

Future<void> initialize()

Starts the splash initialization process.

Runs onInit and the minimum duration timer concurrently, then transitions to SplashState.completed or SplashState.error.

Implementation

Future<void> initialize() async {
  _setState(SplashState.initializing);
  final stopwatch = enablePerformanceMonitoring ? (Stopwatch()..start()) : null;

  try {
    final results = await Future.wait([
      onInit(),
      Future<void>.delayed(Duration(milliseconds: minimumDuration)),
    ]);

    stopwatch?.stop();
    _loadTimeMs = stopwatch?.elapsedMilliseconds;

    if (enablePerformanceMonitoring && kDebugMode) {
      debugPrint(
        '[SmartSplashKit] App initialized in ${_loadTimeMs}ms',
      );
    }

    _resolvedRoute = results[0] as SplashRoute;
    _setState(SplashState.completed);
  } catch (e) {
    stopwatch?.stop();
    _error = e;
    if (kDebugMode) {
      debugPrint('[SmartSplashKit] Initialization error: $e');
    }
    if (errorFallbackRoute != null) {
      _resolvedRoute = errorFallbackRoute;
      _setState(SplashState.completed);
    } else {
      _setState(SplashState.error);
    }
  }
}