ObservableBase<T> constructor

ObservableBase<T>(
  1. Validator? _validator
)

Create an observable with validator

Implementation

ObservableBase(this._validator) {
  if (_validator != null) {
    var c = 0;
    _validate = Computed<int>(() {
      var v = _validator!.validate(value);
      if (v is Future) {
        if (_status != ValidateStatus.pending) {
          _status = ValidateStatus.pending;
          _validatedNotify();
        }
        (v as Future<String?>).then((s) {
          _error = s;
          _status =
              _error == null ? ValidateStatus.valid : ValidateStatus.invalid;
          _validatedNotify();
        });
      } else {
        if (_error != v) {
          _error = v;
          _status =
              _error == null ? ValidateStatus.valid : ValidateStatus.invalid;
          _validatedNotify();
        }
      }
      return ++c;
    });
    _validate.listen(() {
      _validateFunc = null;
      if (_validate.subcriptions
          .any((element) => element.observable == this)) {
        var sub = _validate.subcriptions
            .firstWhere((element) => element.observable == this);
        _validateFunc = sub.callback;
        _callbacks.remove(_validateFunc);
        _validate.subcriptions.remove(sub);
      }
    });
  }
}