executeFuture<T> method

void executeFuture<T>(
  1. Future<T> future, {
  2. BroadcastStream<T>? broadcastStream,
  3. StreamController<T>? controller,
})

this method execute future and add result in your controller

Implementation

void executeFuture<T>(Future<T> future,
    {BroadcastStream<T>? broadcastStream, StreamController<T>? controller}) {
  //CHECK INPUT (ONE SOURCE AND ONE DESTINATION)
  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 FUTURE
  future
      .then((result) => _controller.add(result))
      .catchError((error) => _controller.addError(error));
}