鸿蒙 ArkTS 实战:自行车打气记录的状态建模、算法与交互实现
鸿蒙 ArkTS 实战:自行车打气记录的状态建模、算法与交互实现
前言
自行车打气记录用于比较前后轮胎压与目标值并登记补气。
项目通过 ArkTS、ArkUI 和 @State 管理 front、rear、target、pumps。
核心是 双轮比较、目标同步和次数累计,默认数据为前轮 45、后轮 50、目标 55 PSI。
页面展示胎压状态和累计补气次数。
图 1:DevEco Studio 中的 ArkTS 开发环境。
页面结果应能从当前状态完整复算。
边界条件需要落到真实代码路径。
两个轮胎独立输入。
本文只讨论源码已实现能力。
一、业务对象
1.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑业务对象。
两个轮胎独立输入。
1.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
1.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
1.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
| 业务对象维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | front、rear、target、pumps | 保存数据 |
| 规则 | 任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值 | 生成反馈 |
| 边界 | 双轮比较、目标同步和次数累计 | 保护结果 |
| 结果 | 胎压状态和累计补气次数 | 呈现结论 |
二、状态字段
2.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑状态字段。
任一低于目标都不达标。
2.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
2.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
2.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
三、核心规则
3.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑核心规则。
补气操作同时对齐目标值。
3.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
3.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
3.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
- 读取输入。
- 执行业务规则。
- 处理边界。
- 刷新界面。
四、输入控件
4.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑输入控件。
两个轮胎独立输入。
4.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
4.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
4.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
| 输入控件维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | front、rear、target、pumps | 保存数据 |
| 规则 | 任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值 | 生成反馈 |
| 边界 | 双轮比较、目标同步和次数累计 | 保护结果 |
| 结果 | 胎压状态和累计补气次数 | 呈现结论 |
五、事件回调
5.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑事件回调。
任一低于目标都不达标。
5.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
5.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
5.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
六、边界保护
6.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑边界保护。
补气操作同时对齐目标值。
6.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
6.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
6.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
- 自行车打气记录保存真实状态。
- target参与核心逻辑。
- 胎压状态和累计补气次数形成反馈。
- 双轮比较、目标同步和次数累计保护输出。
七、状态反馈
7.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑状态反馈。
两个轮胎独立输入。
7.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
7.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
7.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
八、默认运行
8.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑默认运行。
任一低于目标都不达标。
8.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
8.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
8.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
| 默认运行维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | front、rear、target、pumps | 保存数据 |
| 规则 | 任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值 | 生成反馈 |
| 边界 | 双轮比较、目标同步和次数累计 | 保护结果 |
| 结果 | 胎压状态和累计补气次数 | 呈现结论 |
九、连续迁移
9.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑连续迁移。
补气操作同时对齐目标值。
9.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
9.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
9.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
- 读取输入。
- 执行业务规则。
- 处理边界。
- 刷新界面。
十、数组或数值更新
10.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑数组或数值更新。
两个轮胎独立输入。
10.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
10.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
10.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
十一、声明式刷新
11.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑声明式刷新。
任一低于目标都不达标。
11.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
11.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
11.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
- 自行车打气记录保存真实状态。
- target参与核心逻辑。
- 胎压状态和累计补气次数形成反馈。
- 双轮比较、目标同步和次数累计保护输出。
十二、布局层级
12.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑布局层级。
补气操作同时对齐目标值。
12.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
12.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
12.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
| 布局层级维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | front、rear、target、pumps | 保存数据 |
| 规则 | 任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值 | 生成反馈 |
| 边界 | 双轮比较、目标同步和次数累计 | 保护结果 |
| 结果 | 胎压状态和累计补气次数 | 呈现结论 |
十三、颜色语义
13.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑颜色语义。
两个轮胎独立输入。
13.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
13.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
13.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
十四、异常输入
14.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑异常输入。
任一低于目标都不达标。
14.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
14.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
14.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
十五、验证场景
15.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑验证场景。
补气操作同时对齐目标值。
15.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
15.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
15.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
- 读取输入。
- 执行业务规则。
- 处理边界。
- 刷新界面。
十六、性能表现
16.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑性能表现。
两个轮胎独立输入。
16.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
16.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
16.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
| 性能表现维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | front、rear、target、pumps | 保存数据 |
| 规则 | 任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值 | 生成反馈 |
| 边界 | 双轮比较、目标同步和次数累计 | 保护结果 |
| 结果 | 胎压状态和累计补气次数 | 呈现结论 |
十七、维护方式
17.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑维护方式。
任一低于目标都不达标。
17.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
17.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
17.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
十八、代码职责
18.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑代码职责。
补气操作同时对齐目标值。
18.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
18.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
18.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
- 自行车打气记录保存真实状态。
- target参与核心逻辑。
- 胎压状态和累计补气次数形成反馈。
- 双轮比较、目标同步和次数累计保护输出。
十九、运行结论
19.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑运行结论。
两个轮胎独立输入。
19.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
19.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
19.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
二十、项目启示
20.1 数据结构
自行车打气记录使用 front、rear、target、pumps 支撑项目启示。
任一低于目标都不达标。
20.2 业务规则
任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值
target 及相关表达式承担核心行为。
20.3 交互刷新
控件回调更新状态并显示胎压状态和累计补气次数。
ArkUI 根据依赖关系刷新。
20.4 边界结论
双轮比较、目标同步和次数累计
结果因此保持稳定。
| 项目启示维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | front、rear、target、pumps | 保存数据 |
| 规则 | 任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值 | 生成反馈 |
| 边界 | 双轮比较、目标同步和次数累计 | 保护结果 |
| 结果 | 胎压状态和累计补气次数 | 呈现结论 |
二十一、真实源码分段
21.1 源码片段 1
以下代码来自当前项目。
@Entry @Component struct Index{@State front:number=45;@State rear:number=50;@State target:number=55;@State pumps:number=0;build(){Column(){Text('自行车打气记录').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('记录前后轮胎压并登记补气').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('目标胎压:'+this.target+' PSI').width('100%');Slider({value:this.target,min:30,max:90,step:1}).onChange((v:number)=>this.target=Math.round(v)).width('100%');Text('前轮 '+this.front+' · 后轮 '+this.rear+' PSI').width('100%').margin({top:18});Slider({value:this.front,min:10,max:90,step:1}).onChange((v:number)=>this.front=Math.round(v)).width('100%');Slider({value:this.rear,min:10,max:90,step:1}).onChange((v:number)=>this.rear=Math.round(v)).width('100%');Text(this.front<this.target||this.rear<this.target?'胎压不足,建议补气':'胎压达到目标').fontSize(20).fontWeight(FontWeight.Bold).fontColor(this.front<this.target||this.rear<this.target?'#B42318':'#087443').padding(20).width('100%').margin({top:18}).backgroundColor('#F0FAF4').borderRadius(9);Button('登记补气至目标').width('100%').height(48).margin({top:18}).onClick(()=>{this.front=this.target;this.rear=this.target;this.pumps++});Text('累计补气 '+this.pumps+' 次').fontColor('#667085').margin({top:12})}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与比较前后轮胎压与目标值并登记补气。
21.2 源码片段 2
以下代码来自当前项目。
@Entry @Component struct Index{@State front:number=45;@State rear:number=50;@State target:number=55;@State pumps:number=0;build(){Column(){Text('自行车打气记录').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('记录前后轮胎压并登记补气').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('目标胎压:'+this.target+' PSI').width('100%');Slider({value:this.target,min:30,max:90,step:1}).onChange((v:number)=>this.target=Math.round(v)).width('100%');Text('前轮 '+this.front+' · 后轮 '+this.rear+' PSI').width('100%').margin({top:18});Slider({value:this.front,min:10,max:90,step:1}).onChange((v:number)=>this.front=Math.round(v)).width('100%');Slider({value:this.rear,min:10,max:90,step:1}).onChange((v:number)=>this.rear=Math.round(v)).width('100%');Text(this.front<this.target||this.rear<this.target?'胎压不足,建议补气':'胎压达到目标').fontSize(20).fontWeight(FontWeight.Bold).fontColor(this.front<this.target||this.rear<this.target?'#B42318':'#087443').padding(20).width('100%').margin({top:18}).backgroundColor('#F0FAF4').borderRadius(9);Button('登记补气至目标').width('100%').height(48).margin({top:18}).onClick(()=>{this.front=this.target;this.rear=this.target;this.pumps++});Text('累计补气 '+this.pumps+' 次').fontColor('#667085').margin({top:12})}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与比较前后轮胎压与目标值并登记补气。
21.3 源码片段 3
以下代码来自当前项目。
@Entry @Component struct Index{@State front:number=45;@State rear:number=50;@State target:number=55;@State pumps:number=0;build(){Column(){Text('自行车打气记录').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('记录前后轮胎压并登记补气').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('目标胎压:'+this.target+' PSI').width('100%');Slider({value:this.target,min:30,max:90,step:1}).onChange((v:number)=>this.target=Math.round(v)).width('100%');Text('前轮 '+this.front+' · 后轮 '+this.rear+' PSI').width('100%').margin({top:18});Slider({value:this.front,min:10,max:90,step:1}).onChange((v:number)=>this.front=Math.round(v)).width('100%');Slider({value:this.rear,min:10,max:90,step:1}).onChange((v:number)=>this.rear=Math.round(v)).width('100%');Text(this.front<this.target||this.rear<this.target?'胎压不足,建议补气':'胎压达到目标').fontSize(20).fontWeight(FontWeight.Bold).fontColor(this.front<this.target||this.rear<this.target?'#B42318':'#087443').padding(20).width('100%').margin({top:18}).backgroundColor('#F0FAF4').borderRadius(9);Button('登记补气至目标').width('100%').height(48).margin({top:18}).onClick(()=>{this.front=this.target;this.rear=this.target;this.pumps++});Text('累计补气 '+this.pumps+' 次').fontColor('#667085').margin({top:12})}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与比较前后轮胎压与目标值并登记补气。
21.4 源码片段 4
以下代码来自当前项目。
@Entry @Component struct Index{@State front:number=45;@State rear:number=50;@State target:number=55;@State pumps:number=0;build(){Column(){Text('自行车打气记录').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('记录前后轮胎压并登记补气').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('目标胎压:'+this.target+' PSI').width('100%');Slider({value:this.target,min:30,max:90,step:1}).onChange((v:number)=>this.target=Math.round(v)).width('100%');Text('前轮 '+this.front+' · 后轮 '+this.rear+' PSI').width('100%').margin({top:18});Slider({value:this.front,min:10,max:90,step:1}).onChange((v:number)=>this.front=Math.round(v)).width('100%');Slider({value:this.rear,min:10,max:90,step:1}).onChange((v:number)=>this.rear=Math.round(v)).width('100%');Text(this.front<this.target||this.rear<this.target?'胎压不足,建议补气':'胎压达到目标').fontSize(20).fontWeight(FontWeight.Bold).fontColor(this.front<this.target||this.rear<this.target?'#B42318':'#087443').padding(20).width('100%').margin({top:18}).backgroundColor('#F0FAF4').borderRadius(9);Button('登记补气至目标').width('100%').height(48).margin({top:18}).onClick(()=>{this.front=this.target;this.rear=this.target;this.pumps++});Text('累计补气 '+this.pumps+' 次').fontColor('#667085').margin({top:12})}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与比较前后轮胎压与目标值并登记补气。
21.5 源码片段 5
以下代码来自当前项目。
@Entry @Component struct Index{@State front:number=45;@State rear:number=50;@State target:number=55;@State pumps:number=0;build(){Column(){Text('自行车打气记录').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('记录前后轮胎压并登记补气').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('目标胎压:'+this.target+' PSI').width('100%');Slider({value:this.target,min:30,max:90,step:1}).onChange((v:number)=>this.target=Math.round(v)).width('100%');Text('前轮 '+this.front+' · 后轮 '+this.rear+' PSI').width('100%').margin({top:18});Slider({value:this.front,min:10,max:90,step:1}).onChange((v:number)=>this.front=Math.round(v)).width('100%');Slider({value:this.rear,min:10,max:90,step:1}).onChange((v:number)=>this.rear=Math.round(v)).width('100%');Text(this.front<this.target||this.rear<this.target?'胎压不足,建议补气':'胎压达到目标').fontSize(20).fontWeight(FontWeight.Bold).fontColor(this.front<this.target||this.rear<this.target?'#B42318':'#087443').padding(20).width('100%').margin({top:18}).backgroundColor('#F0FAF4').borderRadius(9);Button('登记补气至目标').width('100%').height(48).margin({top:18}).onClick(()=>{this.front=this.target;this.rear=this.target;this.pumps++});Text('累计补气 '+this.pumps+' 次').fontColor('#667085').margin({top:12})}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与比较前后轮胎压与目标值并登记补气。
21.6 源码片段 6
以下代码来自当前项目。
@Entry @Component struct Index{@State front:number=45;@State rear:number=50;@State target:number=55;@State pumps:number=0;build(){Column(){Text('自行车打气记录').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('记录前后轮胎压并登记补气').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('目标胎压:'+this.target+' PSI').width('100%');Slider({value:this.target,min:30,max:90,step:1}).onChange((v:number)=>this.target=Math.round(v)).width('100%');Text('前轮 '+this.front+' · 后轮 '+this.rear+' PSI').width('100%').margin({top:18});Slider({value:this.front,min:10,max:90,step:1}).onChange((v:number)=>this.front=Math.round(v)).width('100%');Slider({value:this.rear,min:10,max:90,step:1}).onChange((v:number)=>this.rear=Math.round(v)).width('100%');Text(this.front<this.target||this.rear<this.target?'胎压不足,建议补气':'胎压达到目标').fontSize(20).fontWeight(FontWeight.Bold).fontColor(this.front<this.target||this.rear<this.target?'#B42318':'#087443').padding(20).width('100%').margin({top:18}).backgroundColor('#F0FAF4').borderRadius(9);Button('登记补气至目标').width('100%').height(48).margin({top:18}).onClick(()=>{this.front=this.target;this.rear=this.target;this.pumps++});Text('累计补气 '+this.pumps+' 次').fontColor('#667085').margin({top:12})}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与比较前后轮胎压与目标值并登记补气。
21.7 源码片段 7
以下代码来自当前项目。
@Entry @Component struct Index{@State front:number=45;@State rear:number=50;@State target:number=55;@State pumps:number=0;build(){Column(){Text('自行车打气记录').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('记录前后轮胎压并登记补气').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('目标胎压:'+this.target+' PSI').width('100%');Slider({value:this.target,min:30,max:90,step:1}).onChange((v:number)=>this.target=Math.round(v)).width('100%');Text('前轮 '+this.front+' · 后轮 '+this.rear+' PSI').width('100%').margin({top:18});Slider({value:this.front,min:10,max:90,step:1}).onChange((v:number)=>this.front=Math.round(v)).width('100%');Slider({value:this.rear,min:10,max:90,step:1}).onChange((v:number)=>this.rear=Math.round(v)).width('100%');Text(this.front<this.target||this.rear<this.target?'胎压不足,建议补气':'胎压达到目标').fontSize(20).fontWeight(FontWeight.Bold).fontColor(this.front<this.target||this.rear<this.target?'#B42318':'#087443').padding(20).width('100%').margin({top:18}).backgroundColor('#F0FAF4').borderRadius(9);Button('登记补气至目标').width('100%').height(48).margin({top:18}).onClick(()=>{this.front=this.target;this.rear=this.target;this.pumps++});Text('累计补气 '+this.pumps+' 次').fontColor('#667085').margin({top:12})}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与比较前后轮胎压与目标值并登记补气。
21.8 源码片段 8
以下代码来自当前项目。
@Entry @Component struct Index{@State front:number=45;@State rear:number=50;@State target:number=55;@State pumps:number=0;build(){Column(){Text('自行车打气记录').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('记录前后轮胎压并登记补气').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('目标胎压:'+this.target+' PSI').width('100%');Slider({value:this.target,min:30,max:90,step:1}).onChange((v:number)=>this.target=Math.round(v)).width('100%');Text('前轮 '+this.front+' · 后轮 '+this.rear+' PSI').width('100%').margin({top:18});Slider({value:this.front,min:10,max:90,step:1}).onChange((v:number)=>this.front=Math.round(v)).width('100%');Slider({value:this.rear,min:10,max:90,step:1}).onChange((v:number)=>this.rear=Math.round(v)).width('100%');Text(this.front<this.target||this.rear<this.target?'胎压不足,建议补气':'胎压达到目标').fontSize(20).fontWeight(FontWeight.Bold).fontColor(this.front<this.target||this.rear<this.target?'#B42318':'#087443').padding(20).width('100%').margin({top:18}).backgroundColor('#F0FAF4').borderRadius(9);Button('登记补气至目标').width('100%').height(48).margin({top:18}).onClick(()=>{this.front=this.target;this.rear=this.target;this.pumps++});Text('累计补气 '+this.pumps+' 次').fontColor('#667085').margin({top:12})}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与比较前后轮胎压与目标值并登记补气。
二十二、运行案例
22.1 默认数据
使用前轮 45、后轮 50、目标 55 PSI。
观察 front、rear、target、pumps 与结果。
确认胎压状态和累计补气次数可复算。
22.2 最小边界
双轮比较、目标同步和次数累计
观察 front、rear、target、pumps 与结果。
确认胎压状态和累计补气次数可复算。
22.3 临界输入
围绕双轮比较、目标同步和次数累计验证阈值。
观察 front、rear、target、pumps 与结果。
确认胎压状态和累计补气次数可复算。
22.4 连续操作
连续执行 target。
观察 front、rear、target、pumps 与结果。
确认胎压状态和累计补气次数可复算。
| 验证维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | front、rear、target、pumps | 保存数据 |
| 规则 | 任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值 | 生成反馈 |
| 边界 | 双轮比较、目标同步和次数累计 | 保护结果 |
| 结果 | 胎压状态和累计补气次数 | 呈现结论 |
二十三、技术取舍
23.1 本地状态
自行车打气记录围绕双轮比较、目标同步和次数累计选择本地状态。
当前职责集中且可追踪。
23.2 具名函数
自行车打气记录围绕双轮比较、目标同步和次数累计选择具名函数。
当前职责集中且可追踪。
23.3 声明式组件
自行车打气记录围绕双轮比较、目标同步和次数累计选择声明式组件。
当前职责集中且可追踪。
23.4 清晰边界
自行车打气记录围绕双轮比较、目标同步和次数累计选择清晰边界。
当前职责集中且可追踪。
二十四、总结
自行车打气记录使用鸿蒙 ArkTS 完成了“比较前后轮胎压与目标值并登记补气”闭环。
核心规则是:任一轮胎压低于 target 即提示补气,登记后前后轮都设置为目标值。
状态字段为 front、rear、target、pumps。
状态建模、业务函数 与 声明式界面 共同保证结果稳定。
相关资源:
更多推荐




所有评论(0)