Skip to content

Handler

Event handler define application logic.


After creating an app instance, you can start defining your application logic using event handlers. An event handler is a function that receive an Event instance and returns a response. You can compare it to controllers in other frameworks.

Defining event handlers

To define an event handler you just need to create a function that accepts an Event object and can return anything:

dart
String handler(Event event) {
    return 'Response';
}

The callback function can be sync or async:

dart
Future<String> handler(Event event) async {
    return 'Response';
}

Responses Types

Values returned from event handlers are automatically converted to responses. It can be:

  • You can return an arbitrary object (e.g. Map, List) or an object with a toJson() method, it will be stringified and sent with default application/json content-type.
  • String/num/bool - Sent as-is using default text/plain content-type.
  • null/void - Spry with end response with 204 - No Content status code.
  • Response
  • Stream<Uint8List>

Any of above values could also be wrapped in a FutureOr. This means that you can return a FutureOr from your event handler and Spry will wait for it to resolve before sending the response.

Stack handlers

Spry does not have the concept of so-called middleware. Every handler registered to Spry is expected to be the final event handler.

Once any event handler returns data, it means that the call chain is terminated. Sometimes we expect subsequent handlers in an event handler to be executed only after all calls are completed. We can use the next tool:

dart
app.use((event) {
    final res = next(event);
    print('after');

    return res;
});

Released under the MIT License.