getInitialData method

Future<void> getInitialData()

Implementation

Future<void> getInitialData() async {
  // Guard against multiple calls (e.g., when AppRootWidget rebuilds)
  if (_hasInitialized) {
    logv('getInitialData: Already initialized, skipping');
    return;
  }
  _hasInitialized = true;

  try {
    emitSafe(state.copyWith(appStatus: AppStatus.loading));

    // Initialize version update service
    await _initializeVersionUpdateService();

    // Initialize app lifecycle service
    _initializeLifecycleService();

    final isNetworkRequiredOrOverriden = (AppConfigBase.networkRequiredOverride == 'null')
        ? networkRequired
        : (AppConfigBase.networkRequiredOverride == 'true');

    if (!isNetworkRequiredOrOverriden) {
      logd(
          'Network connection not required during app start - setting networkStatus to connected');
      emitSafe(state.copyWith(networkStatus: NetworkStatus.connected));
      await _finalizeAppStartup();
    } else {
      logd('Checking network connection as required during app start');
      await _initializeNetworkChecking();
    }
  } catch (e) {
    loge(e, 'Error in getInitialData');
    emitSafe(state.copyWith(
      appStatus: AppStatus.error,
      networkErrorMessage: 'Failed to initialize app: ${e.toString()}',
    ));
  }
}