environment — 运行时环境
查询并观察运行时平台、布局模式与环境变更通知。
self.env 提供运行时环境查询能力,包括操作系统、窗口尺寸、布局模式、语言与主题(需声明 environment 权限)。
方法
| 方法/属性 | 说明 |
|---|---|
get(callback?) | 获取环境快照 |
on_change(handler) | 订阅环境变更 |
os | 操作系统名称(只读属性) |
is_desktop_platform | 是否桌面平台(只读属性) |
layout_mode | 当前布局模式(只读属性) |
width / height | 窗口尺寸(只读属性) |
locale | 界面语言标签(只读属性) |
theme_mode | 当前主题(只读属性) |
get(callback?)
查询当前环境快照。
snapshot = self.env.get() # 未传 callback 时立即返回当前快照(首次为 None)参数:
callback(callable, 可选) — 查询结果回调
回调数据(快照键为 camelCase):
| 键 | 类型 | 说明 |
|---|---|---|
os | str | 操作系统名称 |
isDesktopPlatform | bool | 是否桌面平台 |
layoutMode | str | 布局模式 |
width | int | 窗口宽度 |
height | int | 窗口高度 |
locale | str | 语言标签 |
themeMode | str | 主题模式 |
传入 callback 时返回值为当前缓存的快照;回调在宿主响应后执行。此前已获取过快照时,get() 也能返回缓存值。
on_change(handler)
订阅环境变更。窗口尺寸变化导致布局模式切换时,处理器会被调用。
self.env.on_change(lambda snapshot: print(snapshot))变更通知是防抖的:快速的连续缩放事件会在窗口稳定后合并为一次通知。
属性
属性仅在已获取快照后可用,否则返回 None。
os— 操作系统:windows/macos/linux/android/ios/webis_desktop_platform— 是否运行在桌面 OSlayout_mode— 布局模式:mobile/tablet/desktopwidth/height— 窗口宽高locale— 界面语言标签theme_mode— 主题:dark/light
| 布局模式 | 宽度范围 |
|---|---|
mobile | 0 – 599px |
tablet | 600 – 839px |
desktop | 840px+ |
使用示例
class MyPlugin(UiPlugin):
def on_start(self):
self.env.get(callback=self._init_snapshot)
self.env.on_change(self._on_env_changed)
def _init_snapshot(self, data):
if data.get("layoutMode") == "mobile":
self.message.info("移动端布局")
def _on_env_changed(self, snapshot):
self.message.info(f"布局切换: {snapshot.get('layoutMode')}")