EventSource<T> constructor

EventSource<T>({
  1. required String url,
  2. required T parser(
    1. String data
    ),
  3. Client? httpClient,
  4. HttpMethod method = HttpMethod.get,
  5. Map<String, dynamic>? params,
  6. FutureOr<Map<String, String>> headers()?,
  7. Duration retryDelay = Duration.zero,
  8. int? maxRetryCount,
  9. SseHookOnMessage<T>? onMessage,
  10. SseHookOnOpen<T>? onOpen,
  11. SseHookOnClose<T>? onClose,
  12. SseHookOnError<T>? onError,
  13. String? lastEventId,
})

Implementation

EventSource({
  required this.url,
  required this.parser,
  http.Client? httpClient,
  this.method = HttpMethod.get,
  Map<String, dynamic>? params,
  FutureOr<Map<String, String>> Function()? headers,
  Duration retryDelay = Duration.zero,
  int? maxRetryCount,
  // hooks
  SseHookOnMessage<T>? onMessage,
  SseHookOnOpen<T>? onOpen,
  SseHookOnClose<T>? onClose,
  SseHookOnError<T>? onError,
  this.lastEventId,
})  : _headers = headers,
      _params = params,
      _retryDelay = retryDelay,
      _maxRetryCount = maxRetryCount {
  this._httpClient = httpClient ?? http.Client();

  // set hooks
  _onMessage = (data) {
    onMessage?.call(data, this);
    _streamController?.add(data);
  };
  _onError = (err) {
    onError?.call(err, this);
    _streamController?.addError(err);
  };
  _onOpen = (response) {
    onOpen?.call(response, this);
  };
  _onClose = () {
    onClose?.call(this);
  };
  _connect();
}