# Environment:设备环境查询 å¼€å‘者如果需è¦åº”用程åºè¿è¡Œçš„设备的环境å‚数,以æ¤æ¥ä½œå‡ºä¸åŒçš„场景判æ–,比如多è¯è¨€ï¼Œæ·±æµ…色模å¼ç‰ï¼Œéœ€è¦ç”¨åˆ°Environment设备环境查询。 Environment是ArkUI框架在应用程åºå¯åŠ¨æ—¶åˆ›å»ºçš„å•ä¾‹å¯¹è±¡ã€‚它为AppStorageæ供了一系列æ述应用程åºè¿è¡ŒçŠ¶æ€çš„属性。Environment的所有属性都是ä¸å¯å˜çš„(å³åº”用ä¸å¯å†™å…¥ï¼‰ï¼Œæ‰€æœ‰çš„属性都是简å•ç±»åž‹ã€‚ Environmentæ供了读å–系统æŸäº›çŽ¯å¢ƒå˜é‡çš„能力,具体è§[Environment内置å‚æ•°](#environment内置å‚æ•°),并将其值写入AppStorage里,所以开å‘者需è¦é€šè¿‡AppStorageæ‰èƒ½èŽ·å–环境å˜é‡çš„值。 在阅读本文档å‰ï¼Œå»ºè®®æå‰é˜…读:[AppStorage](./arkts-appstorage.md)。 ## Environment内置å‚æ•° | é”® | æ•°æ®ç±»åž‹ | æè¿° | | ------------------ | ------------------ | ------------------ | | accessibilityEnabled | boolean | 获å–æ— éšœç¢å±å¹•è¯»å–是å¦å¯ç”¨ã€‚ | | colorMode | ColorMode | 色彩模型类型:选项为ColorMode.LIGHT: 浅色,ColorMode.DARK: 深色。 | | fontScale | number | å—体大å°æ¯”例。开å‘者需è¦é…ç½®[configuration](./app-configuration-file.md#configurationæ ‡ç¾)使fontScaleè·Ÿéšç³»ç»Ÿå˜åŒ–。 | | fontWeightScale | number | å—体粗细程度。 | | layoutDirection | LayoutDirection | 布局方å‘类型:包括LayoutDirection.LTR: 从左到å³ï¼ŒLayoutDirection.RTL: 从å³åˆ°å·¦ã€‚ | | languageCode | string | 当å‰ç³»ç»Ÿè¯è¨€å€¼ï¼Œå–值必须为å°å†™å—æ¯, 例如zh。 | ## 使用场景 ### 从UIä¸è®¿é—®Environmentå‚æ•° - 使用Environment.envProp将设备è¿è¡Œçš„环境å˜é‡å˜å…¥AppStorageä¸ï¼š ```ts // 将设备的è¯è¨€codeå˜å…¥AppStorage,默认值为en Environment.envProp('languageCode', 'en'); ``` - å¯ä»¥ä½¿ç”¨\@StorageProp链接到Componentä¸ã€‚ ```ts @StorageProp('languageCode') lang : string = 'en'; ``` 设备环境到Component的更新链:Environment --> AppStorage -->Component。 > **说明:** > > \@StoragePropå…³è”的环境å‚æ•°å¯ä»¥åœ¨æœ¬åœ°æ›´æ”¹ï¼Œä½†ä¸èƒ½åŒæ¥å›žAppStorageä¸ï¼Œå› 为应用对环境å˜é‡å‚数是ä¸å¯å†™çš„,åªèƒ½åœ¨Environmentä¸æŸ¥è¯¢ã€‚ ```ts // 将设备languageCodeå˜å…¥AppStorageä¸ Environment.envProp('languageCode', 'en'); @Entry @Component struct Index { @StorageProp('languageCode') languageCode: string = 'en'; build() { Row() { Column() { // 输出当å‰è®¾å¤‡çš„languageCode Text(this.languageCode) } } } } ``` ### 应用逻辑使用Environment ```ts // 使用Environment.EnvProp将设备è¿è¡ŒlanguageCodeå˜å…¥AppStorageä¸ï¼› Environment.envProp('languageCode', 'en'); // 从AppStorage获å–å•å‘绑定的languageCodeçš„å˜é‡ const lang: SubscribedAbstractProperty<string> = AppStorage.prop('languageCode'); if (lang.get() === 'zh') { console.info('ä½ å¥½'); } else { console.info('Hello!'); } ``` ## é™åˆ¶æ¡ä»¶ Environmentå’ŒUIContext相关è”,需è¦åœ¨[UIContext](../reference/apis-arkui/js-apis-arkui-UIContext.md#uicontext)明确的时候æ‰å¯ä»¥è°ƒç”¨ã€‚å¯ä»¥é€šè¿‡åœ¨[runScopedTask](../reference/apis-arkui/js-apis-arkui-UIContext.md#runscopedtask)里明确上下文。如果没有在UIContextæ˜Žç¡®çš„åœ°æ–¹è°ƒç”¨ï¼Œå°†å¯¼è‡´æ— æ³•æŸ¥è¯¢åˆ°è®¾å¤‡çŽ¯å¢ƒæ•°æ®ã€‚ ```ts // EntryAbility.ets import { UIAbility } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { windowStage.loadContent('pages/Index'); let window = windowStage.getMainWindow() window.then(window => { let uicontext = window.getUIContext() uicontext.runScopedTask(() => { Environment.envProp('languageCode', 'en'); }) }) } } ```