appInitAppCubit function

Future<AppCubit> appInitAppCubit({
  1. bool networkRequired = true,
  2. Uri? entranceUri,
})

Initialize the AppCubit and register it with GetIt.

This should be called in main.dart after other Firebase/config initialization but before running the app.

Example:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await appInitFirebase(DefaultFirebaseOptions.currentPlatform);
  await appInitErrorHandling();
  await appInitRemoteConfig();
  await appInitAppConfigsBase();
  await appInitConnectToFirebaseEmulatorIfNecessary(fbApp);

  // Initialize AppCubit - handles network checking and app lifecycle
  await appInitAppCubit(networkRequired: true);

  runApp(MyApp());
}

Implementation

Future<AppCubit> appInitAppCubit({
  bool networkRequired = true,
  Uri? entranceUri,
}) async {
  final appCubit = AppCubit(
    networkRequired: networkRequired,
    entranceUri: entranceUri,
  );

  GetIt.I.registerSingleton<AppCubit>(appCubit);

  // Initialize app data once here during startup.
  // This must NOT be done in AppRootWidget since widget builds can happen multiple times.
  await appCubit.getInitialData();

  return appCubit;
}