• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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