modulapp

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 package 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.

Libraries

modulapp