HarmonyOS 鸿蒙Next 自定义Toggle内容triggerChange后动画消失

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 自定义Toggle内容triggerChange后动画消失 我想给Toggle增加一个标题文字和开关文字,如图

所以照葫芦画瓢写了这样一段

export default class MySwitchStyle implements ContentModifier<ToggleConfiguration> {
    header: string;
    onContent: string;
    offContent: string;

    constructor(header: string, onContent: string, offContent: string)
    {
        this.header = header;
        this.onContent = onContent;
        this.offContent = offContent;
    }

    applyContent() : WrappedBuilder<[ToggleConfiguration]>
    {
        return wrapBuilder(buildSwitch)
    }

    static columnSpacing = 7;
    static rowSpacing = 12;
}

@Builder
function buildSwitch(config: ToggleConfiguration)
{
    Column({ space: MySwitchStyle.columnSpacing })
    {
        Text((config.contentModifier as MySwitchStyle).header)
        Row({space: MySwitchStyle.rowSpacing})
        {
            Toggle({type: ToggleType.Switch, isOn: config.isOn})
                .onChange((isOn: boolean) =>
                {
                    //注释这行,文字不会变化
                    //不注释这行,文字会变化,但Toggle的动画消失
                    //config.triggerChange(isOn);
                })
            Text(config.isOn? (config.contentModifier as MySwitchStyle).onContent : (config.contentModifier as MySwitchStyle).offContent)
        }
    }
    .alignItems(HorizontalAlign.Start)
}

triggerChange这一行,会导致Toggle本身的动画消失,请问如何解决?


更多关于HarmonyOS 鸿蒙Next 自定义Toggle内容triggerChange后动画消失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

Toggle({ type: ToggleType.Switch, isOn: false })

.onChange((isOn: boolean) => {
    if(isOn) {
        // 需要执行的操作
    }
})

你可以直接给 text 绑定个状态值,然后根据 isOn 去改就好了啊。

更多关于HarmonyOS 鸿蒙Next 自定义Toggle内容triggerChange后动画消失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


状态值放在哪里呢?那个MySwitchStyle不是个自定义组件,不能放@State

这是一个示例 Markdown 文档。

  • 名称: 示例
  • 描述: 这是一个用于展示如何将 HTML 转换为 Markdown 的示例。
  • 创建日期: 2023-10-05
  • 修改日期: 2023-10-06

triggerChange 能写在这个 onChange 里面吗?这里是不是有问题啊。

不是很懂呢,如果不triggerChange,文字没有改,然后外面的其他控件绑定enabled到这个Toggle也不会变,

针对帖子标题中提到的HarmonyOS 鸿蒙Next自定义Toggle内容在triggerChange后动画消失的问题,这通常与动画配置或事件处理逻辑有关。以下是一些可能的原因及解决方向:

  1. 动画配置检查:确保在自定义Toggle组件中,动画配置正确无误。检查动画属性(如持续时间、延迟、插值器等)是否在应用triggerChange后被意外重置或覆盖。

  2. 事件处理逻辑:审查triggerChange方法内部的实现,确认是否在触发变更时正确保留了动画状态。如果triggerChange内部有重置UI或动画状态的代码,需要调整以避免动画消失。

  3. 状态管理:检查组件的状态管理逻辑,确保在状态变化时动画能够正确响应。如果使用了状态管理框架(如Vue、React等),确保状态更新能够触发动画重新执行。

  4. 系统兼容性问题:考虑是否鸿蒙系统的某个版本存在已知的动画处理bug。查阅鸿蒙官方文档或开发者社区,看是否有相关问题的报告和解决方案。

如果以上方法均未能解决问题,可能是更深层次的系统或框架问题。此时,建议直接联系鸿蒙系统的技术支持团队获取专业帮助。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部