๐งฉ GoRouter Modular
๐ Modular Flutter Development
Build scalable Flutter applications with dependency injection, event-driven communication, and seamless routing.
Made with contrib.rocks
โก Quick Startโ
- ๐ฆ Install
- ๐งฉ Create core files
- ๐ Configure App
flutter pub add go_router_modular
dependencies:
flutter:
sdk: flutter
go_router_modular: ^any
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:go_router_modular/go_router_modular.dart';
class AppWidget extends StatelessWidget {
const AppWidget({super.key});
Widget build(BuildContext context) {
return ModularApp.router(
title: 'Modular GoRoute Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
);
}
}
import 'package:go_router_modular/go_router_modular.dart';
class AppModule extends Module {
FutureOr<List<Bind<Object>>> binds() => [
// Bind.singleton<HomeController>((i) => HomeController()),
];
List<ModularRoute> get routes => [
// ModuleRoute('/', child: (context, state) => HomeModule()),
];
}
import 'package:flutter/material.dart';
import 'package:go_router_modular/go_router_modular.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Modular.configure(
appModule: AppModule(),
initialRoute: "/",
debugLogDiagnostics: true,
debugLogDiagnosticsGoRouter: true,
);
runApp(AppWidget());
}
โจ Why Choose GoRouter Modular?โ
๐งฉ Modular Architectureโ
Organize your Flutter app into independent, reusable modules with clear boundaries and responsibilities.
See Example ๐
๐ lib/src/modules/
๐ auth/ - Authentication features
๐ home/ - Home screen and features
๐ profile/ - User profile management
๐ shared/ - Common services
๐ Dependency Injectionโ
Per-module DI with auto-dispose and lifecycle management. Easy testing with mock dependencies.
See Example ๐
// Inject dependencies
final controller = context.read<HomeController>();
final service = Modular.get<ApiService>();
// Different binding types
Bind.singleton<ApiService>((i) => ApiService()),
Bind.factory<Repository>((i) => Repository()),
Bind.lazySingleton<Database>((i) => Database()),
๐ฃ๏ธ GoRouter Integrationโ
Seamless integration with declarative, type-safe navigation in your Flutter app.
See Example ๐
// Navigate between modules
context.go('/user/123');
context.push('/modal');
// With parameters
context.go('/search?q=flutter');
// Module routes
ModuleRoute('/auth', module: AuthModule()),
ModuleRoute('/user', module: UserModule()),
๐ญ Event Systemโ
Event-driven communication between modules. Perfect for micro frontend architectures.
See Example ๐
// Fire events from anywhere
modularEvent.fire(UserLoggedInEvent(user: user));
// Listen in modules
on<UserLoggedInEvent>((event, context) {
// Handle user login across modules
});
๐ฏ Custom Loadersโ
Built-in loading system with customizable indicators during module transitions.
See Example ๐
// Automatic loading during navigation
ModularLoader.show();
ModularLoader.hide();
// Custom loader design
class MyLoader extends CustomModularLoader {
Widget get child => MySpinner();
}
โก Hot Reload Friendlyโ
Fast development with instant feedback. Dependencies persist across hot reloads.
Benefits ๐
- ๐ฅ State preserved during development
- โก Instant UI updates
- ๐งช Easy debugging and testing
- ๐ Faster development cycle
๐๏ธ Architecture Overviewโ
๐ญ Perfect for Micro Frontendsโ
๐ Teams Working Independentlyโ
Build applications where different teams work on different features without conflicts:
Manages cart logic and UI
Handles payment processing
Manages product catalog
Handles all notifications
All teams communicate through events without tight coupling! ๐ฏ
๐ Learning Pathsโ
๐ I'm New to Modular
Start with our step-by-step tutorial that builds a complete app from scratch.
๐ I Want to Learn DI
Understand dependency injection patterns and best practices.
๐ญ I Need Module Communication
Learn about event-driven architecture and micro frontends.
๐ Community & Supportโ
๐ Ready to build something amazing?
Join thousands of developers building scalable Flutter applications with GoRouter Modular