鸿蒙 ArkTS 实战:居家拖鞋库存的状态建模、算法与交互实现
鸿蒙 ArkTS 实战:居家拖鞋库存的状态建模、算法与交互实现
前言
居家拖鞋库存用于按成人、儿童和客用分类统计拖鞋总数。
项目通过 ArkTS、ArkUI 和 @State 管理 adult、child、guest。
核心是 分类统计、客用阈值和派生总量,默认数据为成人 4、儿童 2、客用 2。
页面展示总双数和客用库存状态。
图 1:DevEco Studio 中的 ArkTS 开发环境。
页面结果应能从当前状态完整复算。
边界条件必须落到真实代码路径。
总量不重复保存。
本文只讨论源码已实现能力。
一、业务对象
1.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑业务对象。
总量不重复保存。
1.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
1.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
1.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
| 业务对象维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | adult、child、guest | 保存数据 |
| 规则 | total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量 | 生成反馈 |
| 边界 | 分类统计、客用阈值和派生总量 | 保护结果 |
| 结果 | 总双数和客用库存状态 | 呈现结论 |
二、状态字段
2.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑状态字段。
三类 Slider 独立调整。
2.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
2.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
2.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
三、核心规则
3.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑核心规则。
客用少于两双提示不足。
3.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
3.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
3.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
- 读取输入。
- 执行业务规则。
- 处理边界。
- 刷新界面。
四、输入控件
4.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑输入控件。
总量不重复保存。
4.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
4.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
4.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
| 输入控件维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | adult、child、guest | 保存数据 |
| 规则 | total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量 | 生成反馈 |
| 边界 | 分类统计、客用阈值和派生总量 | 保护结果 |
| 结果 | 总双数和客用库存状态 | 呈现结论 |
五、事件回调
5.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑事件回调。
三类 Slider 独立调整。
5.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
5.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
5.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
六、边界保护
6.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑边界保护。
客用少于两双提示不足。
6.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
6.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
6.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
- 居家拖鞋库存保存真实状态。
- total参与核心逻辑。
- 总双数和客用库存状态形成反馈。
- 分类统计、客用阈值和派生总量保护输出。
七、状态反馈
7.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑状态反馈。
总量不重复保存。
7.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
7.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
7.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
八、默认运行
8.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑默认运行。
三类 Slider 独立调整。
8.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
8.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
8.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
| 默认运行维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | adult、child、guest | 保存数据 |
| 规则 | total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量 | 生成反馈 |
| 边界 | 分类统计、客用阈值和派生总量 | 保护结果 |
| 结果 | 总双数和客用库存状态 | 呈现结论 |
九、连续操作
9.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑连续操作。
客用少于两双提示不足。
9.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
9.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
9.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
- 读取输入。
- 执行业务规则。
- 处理边界。
- 刷新界面。
十、数组或数值更新
10.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑数组或数值更新。
总量不重复保存。
10.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
10.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
10.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
十一、声明式刷新
11.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑声明式刷新。
三类 Slider 独立调整。
11.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
11.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
11.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
- 居家拖鞋库存保存真实状态。
- total参与核心逻辑。
- 总双数和客用库存状态形成反馈。
- 分类统计、客用阈值和派生总量保护输出。
十二、布局结构
12.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑布局结构。
客用少于两双提示不足。
12.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
12.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
12.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
| 布局结构维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | adult、child、guest | 保存数据 |
| 规则 | total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量 | 生成反馈 |
| 边界 | 分类统计、客用阈值和派生总量 | 保护结果 |
| 结果 | 总双数和客用库存状态 | 呈现结论 |
十三、颜色语义
13.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑颜色语义。
总量不重复保存。
13.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
13.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
13.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
十四、异常输入
14.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑异常输入。
三类 Slider 独立调整。
14.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
14.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
14.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
十五、验证场景
15.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑验证场景。
客用少于两双提示不足。
15.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
15.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
15.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
- 读取输入。
- 执行业务规则。
- 处理边界。
- 刷新界面。
十六、性能表现
16.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑性能表现。
总量不重复保存。
16.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
16.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
16.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
| 性能表现维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | adult、child、guest | 保存数据 |
| 规则 | total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量 | 生成反馈 |
| 边界 | 分类统计、客用阈值和派生总量 | 保护结果 |
| 结果 | 总双数和客用库存状态 | 呈现结论 |
十七、维护方式
17.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑维护方式。
三类 Slider 独立调整。
17.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
17.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
17.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
十八、代码职责
18.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑代码职责。
客用少于两双提示不足。
18.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
18.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
18.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
- 居家拖鞋库存保存真实状态。
- total参与核心逻辑。
- 总双数和客用库存状态形成反馈。
- 分类统计、客用阈值和派生总量保护输出。
十九、运行结论
19.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑运行结论。
总量不重复保存。
19.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
19.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
19.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
二十、项目启示
20.1 数据结构
居家拖鞋库存使用 adult、child、guest 支撑项目启示。
三类 Slider 独立调整。
20.2 业务规则
total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量
total 及相关表达式承担核心行为。
20.3 交互刷新
控件回调更新状态并显示总双数和客用库存状态。
ArkUI 根据依赖关系刷新。
20.4 边界结论
分类统计、客用阈值和派生总量
结果因此保持稳定。
| 项目启示维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | adult、child、guest | 保存数据 |
| 规则 | total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量 | 生成反馈 |
| 边界 | 分类统计、客用阈值和派生总量 | 保护结果 |
| 结果 | 总双数和客用库存状态 | 呈现结论 |
二十一、真实源码分段
21.1 源码片段 1
以下代码来自当前项目。
@Entry @Component struct Index{@State adult:number=4;@State child:number=2;@State guest:number=2;total():number{return this.adult+this.child+this.guest}build(){Column(){Text('居家拖鞋库存').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('按用途管理家庭备用拖鞋').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('共 '+this.total()+' 双').fontSize(44).fontWeight(FontWeight.Bold).fontColor('#175CD3');Text('成人 '+this.adult+' · 儿童 '+this.child+' · 客用 '+this.guest).width('100%').margin({top:24});Slider({value:this.adult,min:0,max:12,step:1}).onChange((v:number)=>this.adult=Math.round(v)).width('100%');Slider({value:this.child,min:0,max:12,step:1}).onChange((v:number)=>this.child=Math.round(v)).width('100%');Slider({value:this.guest,min:0,max:12,step:1}).onChange((v:number)=>this.guest=Math.round(v)).width('100%');Text(this.guest<2?'客用拖鞋不足,建议补充':'客用数量充足').width('100%').textAlign(TextAlign.Center).padding(18).margin({top:20}).backgroundColor(this.guest<2?'#FFF1F0':'#F0FAF4').borderRadius(9);Button('补充 1 双客用').width('100%').margin({top:12}).onClick(()=>this.guest++)}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与按成人、儿童和客用分类统计拖鞋总数。
21.2 源码片段 2
以下代码来自当前项目。
@Entry @Component struct Index{@State adult:number=4;@State child:number=2;@State guest:number=2;total():number{return this.adult+this.child+this.guest}build(){Column(){Text('居家拖鞋库存').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('按用途管理家庭备用拖鞋').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('共 '+this.total()+' 双').fontSize(44).fontWeight(FontWeight.Bold).fontColor('#175CD3');Text('成人 '+this.adult+' · 儿童 '+this.child+' · 客用 '+this.guest).width('100%').margin({top:24});Slider({value:this.adult,min:0,max:12,step:1}).onChange((v:number)=>this.adult=Math.round(v)).width('100%');Slider({value:this.child,min:0,max:12,step:1}).onChange((v:number)=>this.child=Math.round(v)).width('100%');Slider({value:this.guest,min:0,max:12,step:1}).onChange((v:number)=>this.guest=Math.round(v)).width('100%');Text(this.guest<2?'客用拖鞋不足,建议补充':'客用数量充足').width('100%').textAlign(TextAlign.Center).padding(18).margin({top:20}).backgroundColor(this.guest<2?'#FFF1F0':'#F0FAF4').borderRadius(9);Button('补充 1 双客用').width('100%').margin({top:12}).onClick(()=>this.guest++)}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与按成人、儿童和客用分类统计拖鞋总数。
21.3 源码片段 3
以下代码来自当前项目。
@Entry @Component struct Index{@State adult:number=4;@State child:number=2;@State guest:number=2;total():number{return this.adult+this.child+this.guest}build(){Column(){Text('居家拖鞋库存').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('按用途管理家庭备用拖鞋').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('共 '+this.total()+' 双').fontSize(44).fontWeight(FontWeight.Bold).fontColor('#175CD3');Text('成人 '+this.adult+' · 儿童 '+this.child+' · 客用 '+this.guest).width('100%').margin({top:24});Slider({value:this.adult,min:0,max:12,step:1}).onChange((v:number)=>this.adult=Math.round(v)).width('100%');Slider({value:this.child,min:0,max:12,step:1}).onChange((v:number)=>this.child=Math.round(v)).width('100%');Slider({value:this.guest,min:0,max:12,step:1}).onChange((v:number)=>this.guest=Math.round(v)).width('100%');Text(this.guest<2?'客用拖鞋不足,建议补充':'客用数量充足').width('100%').textAlign(TextAlign.Center).padding(18).margin({top:20}).backgroundColor(this.guest<2?'#FFF1F0':'#F0FAF4').borderRadius(9);Button('补充 1 双客用').width('100%').margin({top:12}).onClick(()=>this.guest++)}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与按成人、儿童和客用分类统计拖鞋总数。
21.4 源码片段 4
以下代码来自当前项目。
@Entry @Component struct Index{@State adult:number=4;@State child:number=2;@State guest:number=2;total():number{return this.adult+this.child+this.guest}build(){Column(){Text('居家拖鞋库存').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('按用途管理家庭备用拖鞋').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('共 '+this.total()+' 双').fontSize(44).fontWeight(FontWeight.Bold).fontColor('#175CD3');Text('成人 '+this.adult+' · 儿童 '+this.child+' · 客用 '+this.guest).width('100%').margin({top:24});Slider({value:this.adult,min:0,max:12,step:1}).onChange((v:number)=>this.adult=Math.round(v)).width('100%');Slider({value:this.child,min:0,max:12,step:1}).onChange((v:number)=>this.child=Math.round(v)).width('100%');Slider({value:this.guest,min:0,max:12,step:1}).onChange((v:number)=>this.guest=Math.round(v)).width('100%');Text(this.guest<2?'客用拖鞋不足,建议补充':'客用数量充足').width('100%').textAlign(TextAlign.Center).padding(18).margin({top:20}).backgroundColor(this.guest<2?'#FFF1F0':'#F0FAF4').borderRadius(9);Button('补充 1 双客用').width('100%').margin({top:12}).onClick(()=>this.guest++)}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与按成人、儿童和客用分类统计拖鞋总数。
21.5 源码片段 5
以下代码来自当前项目。
@Entry @Component struct Index{@State adult:number=4;@State child:number=2;@State guest:number=2;total():number{return this.adult+this.child+this.guest}build(){Column(){Text('居家拖鞋库存').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('按用途管理家庭备用拖鞋').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('共 '+this.total()+' 双').fontSize(44).fontWeight(FontWeight.Bold).fontColor('#175CD3');Text('成人 '+this.adult+' · 儿童 '+this.child+' · 客用 '+this.guest).width('100%').margin({top:24});Slider({value:this.adult,min:0,max:12,step:1}).onChange((v:number)=>this.adult=Math.round(v)).width('100%');Slider({value:this.child,min:0,max:12,step:1}).onChange((v:number)=>this.child=Math.round(v)).width('100%');Slider({value:this.guest,min:0,max:12,step:1}).onChange((v:number)=>this.guest=Math.round(v)).width('100%');Text(this.guest<2?'客用拖鞋不足,建议补充':'客用数量充足').width('100%').textAlign(TextAlign.Center).padding(18).margin({top:20}).backgroundColor(this.guest<2?'#FFF1F0':'#F0FAF4').borderRadius(9);Button('补充 1 双客用').width('100%').margin({top:12}).onClick(()=>this.guest++)}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与按成人、儿童和客用分类统计拖鞋总数。
21.6 源码片段 6
以下代码来自当前项目。
@Entry @Component struct Index{@State adult:number=4;@State child:number=2;@State guest:number=2;total():number{return this.adult+this.child+this.guest}build(){Column(){Text('居家拖鞋库存').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('按用途管理家庭备用拖鞋').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('共 '+this.total()+' 双').fontSize(44).fontWeight(FontWeight.Bold).fontColor('#175CD3');Text('成人 '+this.adult+' · 儿童 '+this.child+' · 客用 '+this.guest).width('100%').margin({top:24});Slider({value:this.adult,min:0,max:12,step:1}).onChange((v:number)=>this.adult=Math.round(v)).width('100%');Slider({value:this.child,min:0,max:12,step:1}).onChange((v:number)=>this.child=Math.round(v)).width('100%');Slider({value:this.guest,min:0,max:12,step:1}).onChange((v:number)=>this.guest=Math.round(v)).width('100%');Text(this.guest<2?'客用拖鞋不足,建议补充':'客用数量充足').width('100%').textAlign(TextAlign.Center).padding(18).margin({top:20}).backgroundColor(this.guest<2?'#FFF1F0':'#F0FAF4').borderRadius(9);Button('补充 1 双客用').width('100%').margin({top:12}).onClick(()=>this.guest++)}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与按成人、儿童和客用分类统计拖鞋总数。
21.7 源码片段 7
以下代码来自当前项目。
@Entry @Component struct Index{@State adult:number=4;@State child:number=2;@State guest:number=2;total():number{return this.adult+this.child+this.guest}build(){Column(){Text('居家拖鞋库存').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('按用途管理家庭备用拖鞋').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('共 '+this.total()+' 双').fontSize(44).fontWeight(FontWeight.Bold).fontColor('#175CD3');Text('成人 '+this.adult+' · 儿童 '+this.child+' · 客用 '+this.guest).width('100%').margin({top:24});Slider({value:this.adult,min:0,max:12,step:1}).onChange((v:number)=>this.adult=Math.round(v)).width('100%');Slider({value:this.child,min:0,max:12,step:1}).onChange((v:number)=>this.child=Math.round(v)).width('100%');Slider({value:this.guest,min:0,max:12,step:1}).onChange((v:number)=>this.guest=Math.round(v)).width('100%');Text(this.guest<2?'客用拖鞋不足,建议补充':'客用数量充足').width('100%').textAlign(TextAlign.Center).padding(18).margin({top:20}).backgroundColor(this.guest<2?'#FFF1F0':'#F0FAF4').borderRadius(9);Button('补充 1 双客用').width('100%').margin({top:12}).onClick(()=>this.guest++)}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与按成人、儿童和客用分类统计拖鞋总数。
21.8 源码片段 8
以下代码来自当前项目。
@Entry @Component struct Index{@State adult:number=4;@State child:number=2;@State guest:number=2;total():number{return this.adult+this.child+this.guest}build(){Column(){Text('居家拖鞋库存').fontSize(27).fontWeight(FontWeight.Bold).width('100%');Text('按用途管理家庭备用拖鞋').fontColor('#667085').width('100%').margin({top:6,bottom:22});Text('共 '+this.total()+' 双').fontSize(44).fontWeight(FontWeight.Bold).fontColor('#175CD3');Text('成人 '+this.adult+' · 儿童 '+this.child+' · 客用 '+this.guest).width('100%').margin({top:24});Slider({value:this.adult,min:0,max:12,step:1}).onChange((v:number)=>this.adult=Math.round(v)).width('100%');Slider({value:this.child,min:0,max:12,step:1}).onChange((v:number)=>this.child=Math.round(v)).width('100%');Slider({value:this.guest,min:0,max:12,step:1}).onChange((v:number)=>this.guest=Math.round(v)).width('100%');Text(this.guest<2?'客用拖鞋不足,建议补充':'客用数量充足').width('100%').textAlign(TextAlign.Center).padding(18).margin({top:20}).backgroundColor(this.guest<2?'#FFF1F0':'#F0FAF4').borderRadius(9);Button('补充 1 双客用').width('100%').margin({top:12}).onClick(()=>this.guest++)}.width('100%').height('100%').padding(22).backgroundColor('#FFFFFF')}}
该片段参与按成人、儿童和客用分类统计拖鞋总数。
二十二、运行案例
22.1 默认数据
使用成人 4、儿童 2、客用 2。
观察 adult、child、guest 与结果。
确认总双数和客用库存状态可复算。
22.2 最小边界
分类统计、客用阈值和派生总量
观察 adult、child、guest 与结果。
确认总双数和客用库存状态可复算。
22.3 临界输入
围绕分类统计、客用阈值和派生总量验证阈值。
观察 adult、child、guest 与结果。
确认总双数和客用库存状态可复算。
22.4 连续操作
连续执行 total。
观察 adult、child、guest 与结果。
确认总双数和客用库存状态可复算。
| 验证维度 | 当前实现 | 作用 |
|---|---|---|
| 状态 | adult、child、guest | 保存数据 |
| 规则 | total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量 | 生成反馈 |
| 边界 | 分类统计、客用阈值和派生总量 | 保护结果 |
| 结果 | 总双数和客用库存状态 | 呈现结论 |
二十三、总结
居家拖鞋库存使用鸿蒙 ArkTS 完成了“按成人、儿童和客用分类统计拖鞋总数”闭环。
核心规则是:total 汇总三类数量,guest 少于 2 时提示补充,按钮只增加客用数量。
状态字段为 adult、child、guest。
状态建模、业务函数 与 声明式界面 共同保证结果稳定。
相关资源:
更多推荐

所有评论(0)