1 继承 AttributeUpdater 使用方式跟 AttributeModifier 一样
class ButtonModifierImpl extends AttributeUpdater<ButtonModifier> {
isClick = false;
initializeModifier(instance: ButtonModifier): void {
console.log("======initializeModifier=")
instance.backgroundColor(Color.Red)
}
onComponentChanged(component: ButtonModifier): void {
console.log("=======onComponentChanged");
}
applyNormalAttribute(instance: ButtonModifier): void {
console.log("=======applyNormalAttribute");
instance.backgroundColor(Color.Blue)
}
}
1.1 initializeModifier 第一次创建就会执行。applyNormalAttribute不执行。
2 使用
@State
buttonModifier : ButtonModifierImpl = new ButtonModifierImpl();
Column(){
Button("测试Modifier")
.attributeModifier(this.buttonModifier)
Button("测试Modifier")
.backgroundColor(Color.Blue)
.onClick((event)=>{
console.log("======click");
this.buttonModifier.attribute?.backgroundColor(Color.Green);
// this.buttonModifier.isClick = !this.buttonModifier.isClick;
})
}
2.1 当自定义的属性发生改变的时候或者其他状态触发的时候AttributeModifier中定义的方法会执行。 2.2 AttributeUpdater 与 AttributeModifier 不同的是 AttributeUpdater 可以直接获取 attribute 进行属性修改。
this.buttonModifier.attribute?.backgroundColor(Color.Green)