Route constructor

Route({
  1. required String path,
  2. required Component builder(
    1. ParamsContext params
    ),
  3. bool catchAll = false,
})

Implementation

Route({required this.path, required this.builder, this.catchAll = false}) {
  final names = <String>[];

  var pattern = path.replaceAllMapped(RegExp(r':(\w+)'), (m) {
    names.add(m.group(1)!);
    return '([^/]+)';
  });

  _paramNames = names;

  // if catchAll, matches prefix and every next route
  if (catchAll) {
    _regex = RegExp('^$pattern(/.*)?'); // Match /docs, /docs/, /docs/anything
  } else {
    _regex = RegExp('^$pattern\$');
  }
}