1# Environment:设备环境查询 2 3 4开发者如果需要应用程序运行的设备的环境参数,以此来作出不同的场景判断,比如多语言,暗黑模式等,需要用到Environment设备环境查询。 5 6 7Environment是ArkUI框架在应用程序启动时创建的单例对象。它为AppStorage提供了一系列描述应用程序运行状态的属性。Environment的所有属性都是不可变的(即应用不可写入),所有的属性都是简单类型。 8 9 10## 使用场景 11 12 13### 从UI中访问Environment参数 14 15- 使用Environment.EnvProp将设备运行的环境变量存入AppStorage中: 16 17 ```ts 18 // 将设备的语言code存入AppStorage,默认值为en 19 // 后续设备的语言设置切换,都将同步到AppStorage中 20 Environment.EnvProp('languageCode', 'en'); 21 ``` 22 23- 可以使用\@StorageProp链接到Component中。Component会根据设备运行环境的变化而更新: 24 25 ```ts 26 @StorageProp('languageCode') lang : string = 'en'; 27 ``` 28 29设备环境到Component的更新链:Environment --> AppStorage -->Component。 30 31> **说明:** 32> 33> \@StorageProp关联的环境参数可以在本地更改,但不能同步回AppStorage中,因为应用对环境变量参数是不可写的,只能在Environment中查询。 34 35 36```ts 37// 将设备languageCode存入AppStorage中 38Environment.EnvProp('languageCode', 'en'); 39let enable = AppStorage.Get('languageCode'); 40 41@Entry 42@Component 43struct Index { 44 @StorageProp('languageCode') languageCode: string = 'en'; 45 46 build() { 47 Row() { 48 Column() { 49 // 输出当前设备的languageCode 50 Text(this.languageCode) 51 } 52 } 53 } 54} 55``` 56 57 58### 应用逻辑使用Environment 59 60 61```ts 62// 使用Environment.EnvProp将设备运行languageCode存入AppStorage中; 63Environment.EnvProp('languageCode', 'en'); 64// 从AppStorage获取单向绑定的languageCode的变量 65const lang: SubscribedAbstractProperty<string> = AppStorage.Prop('languageCode'); 66 67if (lang.get() === 'zh') { 68 console.info('你好'); 69} else { 70 console.info('Hello!'); 71} 72``` 73