forge_mvvm 1.0.0 copy "forge_mvvm: ^1.0.0" to clipboard
forge_mvvm: ^1.0.0 copied to clipboard

Opinionated MVVM + Clean Architecture framework for Flutter with runtime guardrails, typed state primitives, DI modules, and production scaffolding.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:forge_mvvm/forge_mvvm.dart';
import 'package:go_router/go_router.dart';

import 'features/articles/articles_module.dart';
import 'features/articles/domain/entities/article.dart';
import 'features/articles/ui/article_list_view.dart';
import 'features/home/home_module.dart';
import 'features/home/ui/home_view.dart';
import 'features/login/login_module.dart';
import 'features/login/ui/login_view.dart';
import 'features/signup/signup_module.dart';
import 'features/signup/ui/signup_view.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await ForgeApp.bootstrap(
    modules: <ForgeModule>[
      HomeModule(),
      LoginModule(),
      SignUpModule(),
      ArticlesModule(),
    ],
  );

  final router = GoRouter(
    routes: <RouteBase>[
      GoRoute(
        path: '/',
        builder: (_, __) => const HomeView(),
      ),
      GoRoute(
        path: '/login',
        builder: (_, __) => const LoginView(),
      ),
      GoRoute(
        path: '/signup',
        builder: (_, __) => const SignUpView(),
      ),
      GoRoute(
        path: '/articles',
        builder: (_, __) => const ArticleListView(),
      ),
      GoRoute(
        path: '/articles/details',
        builder: (_, state) {
          final article = state.extra! as Article;
          return ArticleDetailsView(article: article);
        },
      ),
    ],
  );

  ForgeLocator.registerSingleton<ForgeNavigatorAdapter>(
    ForgeGoRouterNavigator(router),
    layer: ForgeLayer.navigation,
    source: 'example-app',
    duplicatePolicy: ForgeDuplicateRegistrationPolicy.replace,
  );

  runApp(ExampleApp(router: router));
}

class ExampleApp extends StatelessWidget {
  const ExampleApp({required this.router, super.key});

  final GoRouter router;

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      title: 'forge_mvvm Example',
      theme: ThemeData(colorSchemeSeed: Colors.indigo),
      routerConfig: router,
    );
  }
}
1
likes
150
points
117
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

Opinionated MVVM + Clean Architecture framework for Flutter with runtime guardrails, typed state primitives, DI modules, and production scaffolding.

Repository (GitHub)
View/report issues
Contributing

Topics

#mvvm #architecture #clean-architecture #state-management

License

MIT (license)

Dependencies

args, equatable, flutter, get_it, go_router, meta, path, provider

More

Packages that depend on forge_mvvm