registerAppRouter<T extends BaseAppRouter> method

void registerAppRouter<T extends BaseAppRouter>(
  1. T? router, {
  2. bool enableNavigationLogs = true,
})

Registers the app router and navigator for navigation management

Parameters:

  • router: The router instance that extends BaseAppRouter
  • enableNavigationLogs: Controls whether navigation logs are printed to console
    • true: Navigation logs will be printed (default)
    • false: Navigation logs will be disabled

This method:

  1. Registers the router as a singleton
  2. Creates and registers an AppNavigator instance

Example:

void configureInjectionApp() {
  // With navigation logs enabled (default)
  getIt.registerAppRouter<AppRouter>(AppRouter());

  // With navigation logs disabled
  getIt.registerAppRouter<AppRouter>(AppRouter(), enableNavigationLogs: false);
}

Note: The router registration is skipped if it's already registered or if the provided router is null.

Implementation

void registerAppRouter<T extends BaseAppRouter>(T? router,
    {bool enableNavigationLogs = true}) {
  try {
    if (router == null) {
      throw ArgumentError('Router cannot be null');
    }

    if (!isRegistered<T>()) {
      registerLazySingleton<BaseAppRouter>(() => get<T>());
      registerLazySingleton<AppNavigator>(() =>
          AppNavigator(get<T>(), enableNavigationLogs: enableNavigationLogs));
    }
  } catch (e) {
    throw 'Failed to register router: $e';
  }
}