go_router_express 2.0.1 copy "go_router_express: ^2.0.1" to clipboard
go_router_express: ^2.0.1 copied to clipboard

An Express.js-like wrapper for go_router that provides a familiar routing API for Flutter applications.

go_router_express #

An Express.js-like wrapper for go_router.

Usage #

final app = GoRouterExpress();

app.get('/', (req, res) {
  res.page(const HomePage());
});

app.get('/users/:id', (req, res) {
  final id = req.intParam('id');
  res.page(UserPage(id: id!));
});

void main() {
  runApp(MaterialApp.router(routerConfig: app.router));
}

Middleware #

class AuthMiddleware extends WidgetMiddleware {
  @override
  Widget build(WidgetRequest req, WidgetResponse res, Widget Function() next) {
    if (req.query('token') == null) {
      return const Text('Unauthorized');
    }
    return next();
  }
}

// Per-route middleware
app.get('/admin', (req, res) {
  res.page(const AdminPage());
}, middlewares: [AuthMiddleware()]);

// Global middleware — applies to all routes
app.use([LoggingMiddleware()]);

Route Groups #

app.group('/api', (api) {
  api.get('/users', (req, res) { ... });   // matches /api/users
  api.get('/posts', (req, res) { ... });   // matches /api/posts
});

Shell Routes #

Shared layouts using go_router's ShellRoute:

app.shell(
  (context, state, child) => Scaffold(
    appBar: AppBar(title: const Text('Dashboard')),
    body: child,
  ),
  (shell) {
    shell.get('/home', (req, res) => res.page(const HomePage()));
    shell.get('/settings', (req, res) => res.page(const SettingsPage()));
  },
);

Typed Parameters #

app.get('/users/:id', (req, res) {
  final id = req.intParam('id');          // int?
  final price = req.doubleParam('price'); // double?
});

app.get('/search', (req, res) {
  final page = req.intQuery('page');       // int?
  final active = req.boolQuery('active');  // bool?
});

Redirects #

// Simple redirect
app.redirect('/old-page', '/new-page');

// Redirect in handler
app.get('/gate', (req, res) {
  res.redirect('/target');
});

Named Routes #

app.get('/users/:id', (req, res) {
  res.page(UserPage(id: req.params('id')!));
}, name: 'user');

go_router is re-exported, so all go_router extensions are available:

context.go('/details');
context.push('/details');
context.pop();

Issues #

For bug reports and feature requests, please visit: GitHub issues

License #

MIT

📖 Japanese Documentation

1
likes
150
points
31
downloads

Documentation

API reference

Publisher

verified publisherrubydog.jp

Weekly Downloads

An Express.js-like wrapper for go_router that provides a familiar routing API for Flutter applications.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, go_router

More

Packages that depend on go_router_express