Getting Started
Quick Start

Quick Start

Set up a modular Flutter app in three steps.

1. Install

flutter pub add go_router_modular

2. Configure

lib/main.dart
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Modular.configure(
    appModule: AppModule(),
    initialRoute: '/',
    debugLogDiagnostics: true,        // Log module injection events
    debugLogDiagnosticsGoRouter: true, // Log GoRouter navigation events
    debugLogEventBus: true,            // Log EventModule events
  );
  runApp(AppWidget());
}

Set all debug* flags to false in production builds.

lib/src/app_widget.dart
class AppWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ModularApp.router(title: 'My App');
  }
}

3. Create Modules

lib/src/app_module.dart
class AppModule extends Module {
  @override
  List<ModularRoute> get routes => [
    ModuleRoute('/', module: HomeModule()),
  ];
}
lib/src/modules/home/home_module.dart
class HomeModule extends Module {
  @override
  FutureBinds binds(Injector i) { // Optional
    i.addSingleton<HomeController>((i) => HomeController());
  }
 
  @override
  List<ModularRoute> get routes => [
    ChildRoute('/', child: (context, state) => HomePage()),
  ];
}

That's it. Your modular app is ready.

Project Structure

A typical modular project looks like this:

lib/
  main.dart
  src/
    app_module.dart
    app_widget.dart
    modules/
      home/
        home_module.dart
        pages/
          home_page.dart
      products/
        products_module.dart
        pages/
          products_page.dart

Each module is a self-contained unit with its own routes, dependencies, and pages.

Next Steps