Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【提案】废弃 config.sys.dweb window.std提供监听主题改变的能力 #202

Open
waterbang opened this issue Jul 27, 2024 · 2 comments

Comments

@waterbang
Copy link
Collaborator

原因:用来监听用户设备的主题颜色改变,来适配light/dark
开发者可以监听到改变的时候改变自己app的主题颜色,来提供更好的体验。

export enum ThemeStatus {
Light,
Dark
}
configPlugin..addEventListener("ThemeSwitch", (event)=> {
  const status:ThemeStatus = event.data
})
@Gaubee
Copy link
Contributor

Gaubee commented Jul 28, 2024

目前要监听主题是否改变,只能的方案是:

  1. 通过 web 的 css+js 来实现监听。
  2. 读取 HttpHeaders 中的 Sec-CH-Prefers-Color-Scheme 字段
  3. 而 js-process 仅有的信息只是 “主题色偏好” 这个属性,也就是 auto、light、dark。但在 auto 下,用户感知不到具体在使用的主题色。

所以如果真的有这个需求,我觉得也应该由 window.std 出发去实现,去进行查询。
比方说:

  • GET window.std.web/query/media/prefers-color-scheme => 'dark'|'light'

包括目前 config 中的 setLang 也是同样的,应该迁移到 window.std 中去实现。
开发者需要面对的是自己的窗口内容的配置,而不是去在乎操作系统的配置。因为窗口内容是 内容提供者(开发方) 和 用户设置 最终下来的结果。
比方说:

  • GET window.std.web/query/languages => { selected: 'zh', options: ['zh', 'en'] }

同样的,也应该提供监听功能:

  • GET window.std.web/watch/media/prefers-color-scheme => event: changed\ndata: dark

参考资料:

@waterbang
Copy link
Collaborator Author

切换目标 移除 config.sys.dweb 按照上面的行动。

@waterbang waterbang changed the title 【提案】config.sys.dweb 提供监听主题改变的能力 【提案】废弃 config.sys.dweb window.std提供监听主题改变的能力 Aug 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants