HarmonyOS Toggle组件在onChange内切换暗黑模式时会回调onChange两次, 且回调开关状态完全相反?

页面内点击Toggle切换按钮, 页面正常切换为暗黑模式, 但是按钮的开关状态不变, 排查发现切换按钮回调了两次, 且两次的开关状态互不相同. 请问这种情况下怎么处理, 保证回调的正确性。

阅读 564
1 个回答

参考demo:

@Entry
@Component
struct  TogglePage2 {
  @State isDarkMode: boolean = false
  build() {
    Column() {
      Toggle({ type: ToggleType.Switch ,isOn:this.isDarkMode})//isOn 属性值在有触发刷新页面的场景中,不要省略
        .onChange((isOn: boolean) => {
          console.log('Toggle.onChange2: isOn', isOn)
          this.isDarkMode = isOn
          getContext(this).getApplicationContext().setColorMode(this.isDarkMode?0:1) //触发二次渲染,渲染不给isOn 熟悉赋值会给默认值false,导致状态不对
        })
    }.width("100%").height("100%").padding(32)
  }
}

Toggle isOn 属性在会触发二次渲染的场景不要省略了,触发二次渲染会读取默认值,如果省略该默认值为false 则会导致toggle 状态不对

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进