anchor.diff:  
     /// Actually update the state variables. If both parameters are provided, then
     /// set them as presented, otherwise we will clear the other one if necessary.
  -  /// Events are only fired if there was a change.
  -  void _setStates({bool checked: false, bool indeterminate: false}) {
  +  /// Events are only fired if there was a change and [emitEvent] is true.
  +  void _setStates(
  +      {bool checked: false, bool indeterminate: false, bool emitEvent = true}) {
       // At most one can be true.
       assert(!checked || !indeterminate);
   
  
positive.code:         ? indeterminateIcon
          : _checked ? checkedIcon : uncheckedIcon;
  
      if (_checked != prevChecked) {
        _onChecked.add(_checked);
      }
  
      if (_indeterminate != prevIndeterminate) {
        _onIndeterminate.add(_indeterminate);
      }
  
  
negative.code:   writeValue(newValue) {
      // Need to ignore the null on init.
      if (newValue == null) return;
      _setStates(checked: (newValue as bool), emitEvent: false);
    }
  
    @override
  