Routing

Spark uses a simple file-based and annotation-based routing system.

Defining Routes

Annotate your page class with `@Page` to define its route.

@Page(path: '/about')
class AboutPage extends SparkPage<void> { ... }

Path Parameters

Use colon syntax to define path parameters. Access them via `request.pathParams`.

@Page(path: '/users/:id')
class UserPage extends SparkPage<User> {
  @override
  Future<PageResponse<User>> loader(PageRequest request) async {
    final id = request.pathParamInt('id');
    final user = await db.getUser(id);
    return PageData(user);
  }
}

Query Parameters

Access query parameters via `request.queryParams`.

// URL: /search?q=spark
final query = request.queryParams['q'];