roux 0.2.0 copy "roux: ^0.2.0" to clipboard
roux: ^0.2.0 copied to clipboard

A lightweight, fast, functional router for Dart with static, parameterized, and wildcard route matching.

roux #

Pub Version Test

Lightweight, fast router for Dart with static, parameterized, and wildcard path matching.

Install #

dart pub add roux

With Flutter:

flutter pub add roux

Quick Start #

import 'package:roux/roux.dart';

final router = Router<String>(
  routes: {
    '/': 'root',
    '/users/all': 'users-all',
    '/users/:id': 'users-id',
    '/users/*': 'users-wildcard',
    '/*': 'global-fallback',
  },
);

final match = router.match('/users/123');
print(match?.data);   // users-id
print(match?.params); // {id: 123}

Route Syntax #

  • Static: /users
  • Named param: /users/:id
  • Wildcard tail: /users/*
  • Global fallback: /*

Notes:

  • Paths must start with /.
  • * is only allowed as the final segment.
  • Embedded syntax like /files/:name.:ext is intentionally unsupported.
  • Matching is case-sensitive.
  • Trailing slash on input is ignored (/users equals /users/).
  • You can register routes via constructor (Router(routes: {...})) or incrementally (add / addAll).

Matching Order #

  1. Exact route (/users/all)
  2. Parameter route (/users/:id)
  3. Wildcard route (/users/*)
  4. Global fallback (/*)

Benchmarks #

Relic-style comparison benchmark:

dart run bench/relic_compare.dart 500

Lookup scenario matrix benchmark:

dart run bench/compare.dart 500

License #

MIT. See LICENSE.

1
likes
160
points
165
downloads

Publisher

verified publishermedz.dev

Weekly Downloads

A lightweight, fast, functional router for Dart with static, parameterized, and wildcard route matching.

Repository (GitHub)
View/report issues

Topics

#router #http #path-matching #trie

Documentation

API reference

Funding

Consider supporting this project:

github.com

License

MIT (license)

More

Packages that depend on roux