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):

类型说明
osstr操作系统名称
isDesktopPlatformbool是否桌面平台
layoutModestr布局模式
widthint窗口宽度
heightint窗口高度
localestr语言标签
themeModestr主题模式

传入 callback 时返回值为当前缓存的快照;回调在宿主响应后执行。此前已获取过快照时,get() 也能返回缓存值。

on_change(handler)

订阅环境变更。窗口尺寸变化导致布局模式切换时,处理器会被调用。

self.env.on_change(lambda snapshot: print(snapshot))

变更通知是防抖的:快速的连续缩放事件会在窗口稳定后合并为一次通知。

属性

属性仅在已获取快照后可用,否则返回 None

  • os — 操作系统:windows / macos / linux / android / ios / web
  • is_desktop_platform — 是否运行在桌面 OS
  • layout_mode — 布局模式:mobile / tablet / desktop
  • width / height — 窗口宽高
  • locale — 界面语言标签
  • theme_mode — 主题:dark / light
布局模式宽度范围
mobile0 – 599px
tablet600 – 839px
desktop840px+

使用示例

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')}")

On this page