modulapp 1.1.1
modulapp: ^1.1.1 copied to clipboard
A simple base class to help you modularize your apps.
module #
A simple base class to help you modularize your apps. It just defines common modules methods.
Keep it simple #
A Module that defines dependency injection (with flutter_inject) #
class HomeModule extends Module {
@override
WidgetBuilder injectDependencies({required WidgetBuilder builder}) {
return (context) => InjectAll(
dependencies: [
Dependency<TodoRepository>((context) => TodoRepositoryImpl()),
],
builder: builder,
);
}
}
A Module that defines routes (with GoRouter) #
class HomeModule extends Module with ModuleRouter<RouteBase> {
@override
final List<RouteBase> routes = [
GoRoute(path: '/home', builder: (context, state) => const HomeView()),
];
}
Glad to Modulapp widget your heavily scaled apps become simpler #
void main() {
final loginModule = LoginModule(postLoginRoute: TodoRoutes.list);
final todoModule = TodoModule();
final favoriteModule = FavoriteModule();
final allModules = [loginModule, todoModule, favoriteModule];
runApp(
Modulapp(
modules: allModules,
supportedLocales: const [Locale('en'), Locale('fr')],
sessionStreamBuilder: (context) => Dependency.get<SessionRepository>(context).watch(),
routerConfigBuilder: (context) {
final session = Dependency.maybeGet<Session>(context);
return GoRouter(
initialLocation: session != null ? TodoRoutes.list : LoginRoutes.home,
routes: session != null ? allModules.routes : loginModule.routes,
);
}),
);
}
Check the example section for a full example #
You'll also find in the Gitlab repository helpful advanced examples with Modules that provides GoRouter routes, translations and dependency injection.