group static method

void group(
  1. Function callback, {
  2. String? prefix = '',
  3. List<Middleware> middleware = const [],
  4. String? domain,
})

Implementation

static void group(
  Function callback, {
  String? prefix = '',
  List<Middleware> middleware = const [],
  String? domain,
}) {
  final router = Router();

  final previousDomain = router._groupDomain;
  final previousPrefix = router._groupPrefix;
  final previousMiddleware = List<Middleware>.from(router._groupMiddleware);

  router._groupDomain = domain ?? previousDomain;

  if (router._groupPrefix != null) {
    if (prefix != null) {
      if (!prefix.startsWith('/')) {
        prefix = '/$prefix';
      }
      router._groupPrefix = _joinPrefixes(router._groupPrefix!, prefix);
    }
  } else {
    if (prefix != null) {
      if (!prefix.startsWith('/')) {
        prefix = '/$prefix';
      }
    }
    router._groupPrefix = prefix;
  }

  if (middleware.isNotEmpty) {
    router._groupMiddleware.addAll(middleware);
  }
  try {
    callback();
  } finally {
    // Restored even when the callback fails, so the group's prefix and
    // middleware never reach routes registered after it.
    router._groupDomain = previousDomain;
    router._groupPrefix = previousPrefix;

    router._groupMiddleware
      ..clear()
      ..addAll(previousMiddleware);
  }
}