toggle method
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()
]);
}