set method

  1. @override
T set(
  1. T value
)
override

Sets a new value for the signal and notifies subscribers when it changes.

Parameters:

  • value: The new value to set

Example:

final counter = Signal(0);
counter.value = 10;
counter.set(11);

Implementation

@override
T set(T value) {
  super.set(value);
  hasInitialized = true;
  _version++;

  if (writeDelay != Duration.zero) {
    _timer?.cancel();
    _timer = Timer(writeDelay, () async {
      _startWrite();
      try {
        final result = write(value);
        if (result is Future) {
          await result;
        }
      } catch (_) {
        // ignore write error
      } finally {
        _finishWrite();
        _timer = null;
      }
    });
  } else {
    _startWrite();
    final result = write(value);
    if (result is Future) {
      // ignore write error
      result.whenComplete(_finishWrite).ignore();
    } else {
      _finishWrite();
    }
  }
  return value;
}