mediatr 0.0.7 copy "mediatr: ^0.0.7" to clipboard
mediatr: ^0.0.7 copied to clipboard

outdated

Dart mediatr package. Central mediator that allows sending requests, and publishing events.

Dart mediator package #

Inspired by https://github.com/jbogard/MediatR

Example Usage #

Create a request

 class AddRequest extends IRequest<int> {
  final int i;

  AddRequest(this.i);
}

Create a request handler

class AddRequestHandler extends IRequestHandler<int, AddRequest> {
  @override
  Future<int> call(AddRequest request) async {
    return request.i + 1;
  }
}

Register the handler to the mediator instance

 final mediator = Mediator(Pipeline());

 mediator.registerHandler<int, AddRequest, AddRequestHandler>(
          () => AddRequestHandler(),
        );

Start sending requests!

final addedOrFailure =await mediator.send<int, AddRequest>(
         AddRequest(2),
       );
print(addedOrFailure.fold((left) {
// an instance of Failure
},
(right) {
// The added number
}));

To add a custom exception handler

final mediator = Mediator(
 Pipeline(),
 errorHandler: _errorHandler,
);

MyFailure? _errorHandler(Exception e) {
 if (e is CustomException) {
   return MyFailure('message');
 }
}

class CustomException implements Exception {}

class MyFailure extends Failure {
 MyFailure(super.message);
}

To add a custom behaviour

class LoggingBehaviour extends IPipelineBehaviour {
  @override
  Future proccess(IRequest request, RequestHandlerDelegate next) {
    print(request);
    return next(request);
  }
}

final mediator = Mediator(
  Pipeline()
    ..addMiddleware(
      LoggingBehaviour(),
    ),
);
7
likes
0
points
370
downloads

Publisher

unverified uploader

Weekly Downloads

Dart mediatr package. Central mediator that allows sending requests, and publishing events.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

either_dart, flutter

More

Packages that depend on mediatr