transformStateSilently method

void transformStateSilently(
  1. T transformer(
    1. T data
    )
)

Transforms the state using a function

Implementation

void transformStateSilently(T Function(T data) transformer) {
  _checkDisposed();

  final newState = transformer(_data);

  // Skip if state hasn't changed
  if (_data.hashCode == newState.hashCode) {
    assert(() {
      log('''
ℹ️ ViewModel<${T.toString()}> transform skipped - state unchanged
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ID: $_instanceId
Hash: ${_data.hashCode}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
''', level: 5);
      return true;
    }());
    return;
  }

  _data = newState;
  _updateCount++;

  assert(() {
    log('''
🔄 ViewModel<${T.toString()}> transformed
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ID: $_instanceId
Update #: $_updateCount
New state hash: ${_data.hashCode}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
''', level: 10);
    return true;
  }());
}