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

A lightweight, Future-based library for expressing CQRS principles in Dart projects.

example/lib/main.dart

import 'dart:async';

import 'package:skiff/skiff.dart';

class FetchCharacters implements Query<FetchCharactersResult> {}

class FetchCharactersResult {
  final List<String> characters;

  FetchCharactersResult(this.characters);
}

class Authenticate implements Command {
  final String username;
  final String password;

  Authenticate(this.username, this.password);
}

void main() async {
  var mediator = Mediator();

  var query = FetchCharacters();

  var charactersHandler =
      FuncHandler<FetchCharacters, FetchCharactersResult>((command) {
    return Future.value(FetchCharactersResult([
      'Eleven',
      'Mike Wheeler',
      'Dustin Henderson',
      'Jim Hopper',
      'Jonathan Byers',
      'Murray Bauman'
    ]));
  });

  mediator.addHandler(charactersHandler);

  var characters = await mediator.dispatch(query);
  characters.characters.forEach(print);

  var command = Authenticate('alexei@starcourtmall.com', 'pa55w0rd');

  var authenticationHandler =
      FuncHandler<Authenticate, CommandResult>((command) {
    return Future.value(CommandResult.succeeded());
  });

  mediator.addHandler(authenticationHandler);

  var result = await mediator.dispatch<CommandResult>(command);
  print('Login ${result.isSuccessful ? 'successful' : 'failed'}');
}
4
likes
140
pub points
0%
popularity

Publisher

verified publisherhalesworth.org

A lightweight, Future-based library for expressing CQRS principles in Dart projects.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

More

Packages that depend on skiff