dash_router_generator 1.0.1
dash_router_generator: ^1.0.1 copied to clipboard
Code generator for dash_router - generates type-safe route code from annotations.
dash_router_generator #
Code generator for dash_router. Generates type-safe route code from @DashRoute annotations.
Features #
- 🔧 CLI-Based Generation - Fast code generation without build_runner overhead
- 📁 Per-Route Info Files - Generates separate files for each route's type info
- 🎯 Type-Safe Navigation - Generates navigation extensions with full type safety
- 🔄 Watch Mode - Auto-regenerate on file changes
- ⚙️ Configurable - Customize output paths and generation options
Installation #
Add to your pubspec.yaml:
dev_dependencies:
dash_router_generator: ^1.0.0
dash_router_cli: ^1.0.0
Usage #
CLI Generation #
# Generate routes
dart run dash_router_cli generate
# Watch for changes
dart run dash_router_cli watch
# Dry run (preview without writing)
dart run dash_router_cli generate --dry-run
Configuration #
Create dash_router.yaml in your project root:
dash_router:
scan:
- "lib/**/*.dart"
generate:
output: "lib/generated/routes.dart"
route_info_output: "lib/generated/route_info/"
options:
generate_navigation: true
generate_typed_routes: true
generate_route_info: true
Generated Code #
The generator produces:
-
Routes File (
routes.dart)generatedRoutes- List of all route entriesgeneratedRedirects- List of redirect entries
-
Route Info Files (per route)
- Type-safe parameter access extensions
- Route pattern checking
-
Navigation Extensions
context.pushUserPage(id: '123')context.replaceWithHomePage()- etc.
Example Generated Code #
For a route defined as:
@DashRoute(
path: '/user/:id',
arguments: [UserData],
)
class UserPage extends StatelessWidget { ... }
The generator produces:
// In route_info/user_$id.route.dart
extension User$IdRouteInfoX on ScopedRouteInfo {
bool get isUser$IdRoute => pattern == '/user/:id';
UserData get typedBody => body.arguments as UserData;
}
// Navigation extensions
extension UserPageNavigation on BuildContext {
Future<T?> pushUserPage<T>({required String id, UserData? userData}) { ... }
Future<T?> replaceWithUserPage<T>({required String id}) { ... }
}
API Reference #
See the API documentation for complete details.
Related Packages #
- dash_router - Core routing library
- dash_router_annotations - Route annotations
- dash_router_cli - CLI tools
License #
MIT License - See LICENSE for details.