df_router 0.5.5 copy "df_router: ^0.5.5" to clipboard
df_router: ^0.5.5 copied to clipboard

A lightweight router designed for ease of use and efficient state management.

banner

pub tag buymeacoffee sponsor patreon discord instagram license


Summary #

A lightweight Flutter router with state management. Live demo.

Quick Start #

import 'package:df_router/df_router.dart';
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

// 1. Define routes.
final class HomeRoute extends RouteState {
  HomeRoute() : super.parse('/home');
}

final class ChatRoute extends RouteState {
  final String chatId;
  ChatRoute({required this.chatId})
    : super.parse('/chat', queryParameters: {'chatId': chatId});
  ChatRoute.from(RouteState other)
    : chatId = other.uri.queryParameters['chatId'] ?? '',
      super(other.uri);
}

// 2. Setup RouteManager.
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      builder: (context, child) {
        return RouteManager(
          fallbackRouteState: HomeRoute.new,
          builders: [
            RouteBuilder(
              routeState: HomeRoute(),
              builder: (context, state) => const HomeScreen(),
            ),
            RouteBuilder(
              routeState: ChatRoute(chatId: ''),
              builder: (context, state) => ChatScreen(route: ChatRoute.from(state)),
            ),
          ],
        );
      },
    );
  }
}

// 3. Navigate.
RouteController.of(context).push(ChatRoute(chatId: '123'));
RouteController.of(context).goBackward();

Features #

  • Declarative route definitions
  • Query parameter support
  • Typed route data via extra
  • Widget caching with shouldPreserve and shouldPrebuild
  • Custom transitions (MaterialEffect, CupertinoEffect, etc.)

For more details, see the API reference.

Contributing #

Join our Discord or support us on Buy Me A Coffee.

License #

MIT License

1
likes
0
points
269
downloads

Publisher

verified publisherdev-cetera.com

Weekly Downloads

A lightweight router designed for ease of use and efficient state management.

Homepage

Topics

#router #navigation #state-management

Funding

Consider supporting this project:

www.buymeacoffee.com
www.patreon.com
github.com
www.patreon.com
github.com
www.buymeacoffee.com

License

unknown (license)

Dependencies

df_log, df_pod, df_pwa_utils, df_safer_dart, flutter

More

Packages that depend on df_router