executeUseCase<I, O> method

void executeUseCase<I, O>(
  1. UseCase<I, O> useCase,
  2. I params, {
  3. BroadcastStream<O>? broadcastStream,
  4. StreamController<O>? controller,
})

this method execute future and add result in your controller

Implementation

void executeUseCase<I, O>(UseCase<I, O> useCase, I params,
    {BroadcastStream<O>? broadcastStream, StreamController<O>? controller}) {
  //CHECK INPUT (ONE SOURCE AND ONE DESTINATION)
  assert(params != null);
  assert((broadcastStream == null && controller != null) ||
      (broadcastStream != null && controller == null));

  //ADD ONE OF THE TWO CONTROLLERS
  dynamic _controller;
  if (broadcastStream != null) {
    _controller = broadcastStream.controller;
  } else if (controller != null) {
    _controller = controller;
  }

  controllers.add(_controller);

  //EXECUTE USECASE
  useCase
      .execute(params)
      .then((result) => _controller.add(result))
      .catchError((error) => _controller.addError(error));
}