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

Annotations for dash_router - A type-safe Flutter routing library with code generation support.

dash_router_annotations #

pub package License: MIT

Annotation definitions for the dash_router routing library. This package provides the annotations used to define routes and configure code generation.

Features #

  • 📝 Route Annotations - Define routes with @DashRoute and related annotations
  • 🎯 Parameter Annotations - Type-safe parameter definitions with @PathParam, @QueryParam, @BodyParam
  • 🎨 Transition Definitions - Built-in transition classes for route animations
  • ⚙️ Configuration - @DashRouterConfig for code generation settings

Installation #

Add to your pubspec.yaml:

dependencies:
  dash_router_annotations: ^1.0.0

Annotations #

@DashRoute #

Define a route for a page widget:

@DashRoute(
  path: '/user/:id',
  transition: CupertinoTransition(),
  guards: [AuthGuard],
  middleware: [LoggingMiddleware],
)
class UserPage extends StatelessWidget {
  final String id;
  const UserPage({super.key, required this.id});
  // ...
}

@DashRouterConfig #

Configure the route generator:

@DashRouterConfig(
  generateNavigation: true,
  generateTypedRoutes: true,
)
class AppRouter {}

Parameter Annotations #

@DashRoute(path: '/search')
class SearchPage extends StatelessWidget {
  @PathParam()
  final String? category;
  
  @QueryParam(defaultValue: '1')
  final int page;
  
  @QueryParam(name: 'sort_by')
  final String? sortBy;
  
  @BodyParam()
  final SearchFilter? filter;
  
  const SearchPage({
    super.key,
    this.category,
    this.page = 1,
    this.sortBy,
    this.filter,
  });
}

@ShellRoute #

Define a shell route for nested navigation:

@ShellRoute(path: '/app')
class AppShell extends StatelessWidget {
  final Widget child;
  const AppShell({super.key, required this.child});
  // ...
}

@InitialRoute #

Mark a route as the initial route:

@InitialRoute()
@DashRoute(path: '/')
class HomePage extends StatelessWidget { ... }

@RedirectRoute #

Define a route redirect:

@RedirectRoute(from: '/old-path', to: '/new-path')
class OldPageRedirect {}

Transitions #

All transitions support const construction:

// Platform adaptive
const PlatformTransition()

// Material Design
const MaterialTransition()

// iOS style
const CupertinoTransition()

// No animation
const NoTransition()

// Custom animations
const DashFadeTransition()
const DashFadeTransition(duration: Duration(milliseconds: 300))

const DashSlideTransition.right()
const DashSlideTransition.bottom()
const DashSlideTransition(begin: Offset(-1, 0))

const DashScaleTransition()
const DashScaleTransition(alignment: Alignment.center)

const DashRotationTransition()

const DashScaleFadeTransition()
const DashSlideFadeTransition.right()

Naming Convention #

Generated code follows a path-based naming convention:

Path Generated Class Generated Field
/app/user/:id AppUser$IdRoute appUser$Id
/app/settings AppSettingsRoute appSettings
/ RootRoute root

Dynamic parameters use $ prefix to distinguish from static segments.

API Reference #

See the API documentation for complete details.

License #

MIT License - See LICENSE for details.

1
likes
0
points
258
downloads

Publisher

verified publisherfluttercandies.com

Weekly Downloads

Annotations for dash_router - A type-safe Flutter routing library with code generation support.

Repository (GitHub)
View/report issues

Topics

#router #code-generation #type-safety #route #router-generator

License

unknown (license)

Dependencies

flutter, meta

More

Packages that depend on dash_router_annotations