toggle method

Widget toggle({
  1. String temp = 'objd_temp',
})

With the toggle method you can toggle the value(invert the tag). This is done with a temporary tag:

Tag('mytag',entity:Entity.Selected()).toggle()
⇒ execute if entity @s[tag=mytag] run tag @s add objd_temp
⇒ execute if entity @s[tag=objd_temp] run tag @s remove mytag
⇒ execute if entity @s[tag=!objd_temp] run tag @s add mytag
⇒ tag @s remove objd_temp

Implementation

Widget toggle({String temp = 'objd_temp'}) {
  var tempTag = Tag(temp, entity: entity);
  return For.of([
    If(this, then: [tempTag]),
    If(tempTag, then: [Tag(tag, entity: entity, value: false)]),
    If(entity.copyWith().not(tags: [temp]),
        then: [Tag(tag, entity: entity, value: true)]),
    tempTag.remove()
  ]);
}