<aside>
โ ๏ธ Attention every dependency when placed in a bind it must be typed for correct operation Ex:
Bind.singleton**<HomeController>**((i) => HomeController())
</aside>
flutter pub add go_router_modular
๐ src
๐ modules
๐ home_controller.dart
๐ย home_page.dart
๐ย home_module.dart
๐app_module.dart
๐app_widget.dart
๐ main.dart
๐main.dart
import 'package:example/src/app_module.dart';
import 'package:example/src/app_widget.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:go_router_modular/go_router_modular.dart';
import 'package:flutter_web_plugins/url_strategy.dart';
final injector = Injector(); // instance global injectors
final router = GoRouter( // configure routes
initialLocation: '/',
routes: AppModule().configureRoutes(injector),
);
void main() {
WidgetsFlutterBinding.ensureInitialized();
if (kIsWeb) usePathUrlStrategy();
runApp(AppWidget(router: router));
}
๐app_widget.dart
import 'package:flutter/material.dart';
import 'package:go_router_modular/go_router_modular.dart';
class AppWidget extends StatelessWidget {
final GoRouter router;
const AppWidget({required this.router, super.key});
@override
Widget build(BuildContext context) {
return MaterialApp.router( // add material app router
routerConfig: router, // configure go_router
title: 'Modular GoRoute Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
);
}
}
๐app_module.dart
import 'package:example/src/modules/home/home_module.dart';
import 'package:example/src/modules/user/aplication/user_store.dart';
import 'package:example/src/modules/user/user_module.dart';
import 'package:go_router_modular/go_router_modular.dart';
class AppModule extends Module {
@override
List<Bind<Object>> get binds => [
Bind.singleton<AuthController>((i) => AuthController()), // define binds global in app_module
];
@override
List<ModuleRoute> get moduleRoutes => [ // define modules
ModuleRoute("/", module: HomeModule()),
];
}
//-----------------------Home-module-example----------------------------------
import 'package:example/src/modules/home/presenters/home_page.dart';
import 'package:go_router_modular/go_router_modular.dart';
class HomeModule extends Module {
@override
List<Bind<Object>> get binds => [
Bind.singleton<HomeController>((i) => HomeController()), // define binds the module
];
@override
List<ChildRoute> get routes => [
ChildRoute('/', name: "home", builder: (context, state, i) => const HomePage()), // define routes
ChildRoute('/config', name: "config", builder: (context, state, i) => const ConfigPage()),
];
}