鸿蒙 ArkTS 实战:Family Grocery Account 从账目记录到状态反馈完整解析
鸿蒙 ArkTS 实战:Family Grocery Account 从账目记录到状态反馈完整解析
前言
Family Grocery Account 是一个面向轻量财务管理的鸿蒙 ArkTS 示例应用,中文场景可以理解为“家庭买菜账本”。家庭买菜账本记录蔬菜、水果等日常采购,把食品分类、价格记录、周统计和常购清单结合起来。
买菜支出单笔不大,但频率高,周统计和常购清单可以让家庭预算更透明。 这个项目用 ArkTS 接口建模、@State 状态驱动、ArkUI 组件布局、金额统计 和 标记状态 搭出完整的单页账本体验。

页面示意图对应 Family Grocery Account 的核心信息架构:顶部展示金额与状态比例,中部呈现业务模块,底部完成新增和列表确认。
财务类工具不一定复杂,但必须让金额、备注和状态保持一致。否则记录越多,用户越难相信账本。
一、项目定位与业务目标
1.1 场景拆解
家庭买菜账本 的基础对象是一条账目记录,用户需要同时看到名称、金额、备注和标记状态。
源码默认记录包含 Vegetables 和 Fruit,金额分别是 46 与 58。amount 字段在这里表示本周买菜支出,单位可以理解为元。
| 业务元素 | 项目表达 | 用户收益 |
|---|---|---|
| 账目名称 | title |
快速识别家庭买菜账本条目 |
| 金额指标 | amount |
汇总本周买菜支出 |
| 备注说明 | note |
保存分类、凭证、提醒或上下文 |
| 状态字段 | flagged |
表示标记状态 |
1.2 核心用户路径
- 打开页面查看顶部金额统计。
- 通过四个功能标签理解账本覆盖范围。
- 填写标题、金额和备注。
- 点击 Add item 新增记录。
- 通过复选框调用
toggleFlag更新状态。
1.3 账本价值
在 Family Grocery Account 中,账本价值服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
二、源码结构总览
2.1 页面文件位置
在 Family Grocery Account 中,页面文件位置服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
2.2 代码层次
在 Family Grocery Account 中,代码层次服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
2.3 职责边界
在 Family Grocery Account 中,职责边界服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
三、数据模型设计
3.1 接口字段
在 Family Grocery Account 中,接口字段服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
3.2 字段语义表
| 字段 | 类型 | 当前含义 | 页面位置 |
|---|---|---|---|
title |
string |
家庭买菜账本账目名称 | 列表主标题 |
amount |
number |
本周买菜支出 | 统计区和行尾金额 |
note |
string |
备注说明 | 列表副文本 |
flagged |
boolean |
标记状态 | 复选框和背景色 |
3.3 模型特点
在 Family Grocery Account 中,模型特点服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
四、状态管理解析
4.1 状态变量清单
在 Family Grocery Account 中,状态变量清单服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
4.2 状态刷新机制
在 Family Grocery Account 中,状态刷新机制服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
4.3 业务状态关系
在 Family Grocery Account 中,业务状态关系服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
账本页面的可靠感来自一致反馈:金额变了,统计要变;状态变了,颜色和数量也要变。
五、金额统计逻辑
5.1 总额计算
在 Family Grocery Account 中,总额计算服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
5.2 状态数量统计
在 Family Grocery Account 中,状态数量统计服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
5.3 方法对比
| 方法 | 输入 | 输出 | 作用 |
|---|---|---|---|
totalAmount() |
items |
金额总和 | 汇总本周买菜支出 |
flaggedCount() |
items |
已标记数量 | 驱动状态比例 |
toggleFlag(index) |
列表索引 | 无 | 切换单条记录状态 |
六、新增记录流程
6.1 输入校验
在 Family Grocery Account 中,输入校验服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
6.2 默认备注
在 Family Grocery Account 中,默认备注服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
6.3 插入顺序
在 Family Grocery Account 中,插入顺序服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
七、页面布局拆解
7.1 滚动容器
在 Family Grocery Account 中,滚动容器服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
7.2 顶部统计区
在 Family Grocery Account 中,顶部统计区服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
7.3 功能标签区
在 Family Grocery Account 中,功能标签区服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
八、列表渲染与状态反馈
8.1 ForEach 渲染
在 Family Grocery Account 中,ForEach 渲染服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
8.2 复选框状态
在 Family Grocery Account 中,复选框状态服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
8.3 视觉反馈
在 Family Grocery Account 中,视觉反馈服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
账本页面的可靠感来自一致反馈:金额变了,统计要变;状态变了,颜色和数量也要变。
九、ArkUI 组件使用
9.1 核心组件表
| 组件 | 用途 | 项目位置 |
|---|---|---|
Scroll |
页面滚动 | 最外层容器 |
Column |
垂直布局 | 页面主体、表单和卡片 |
Row |
横向布局 | 顶部统计、开关行、列表行 |
TextInput |
输入 | 标题、金额、备注 |
Toggle |
开关和复选框 | 提醒开关、状态确认 |
Button |
提交 | 新增记录入口 |
9.2 输入组件
在 Family Grocery Account 中,输入组件服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
9.3 按钮组件
在 Family Grocery Account 中,按钮组件服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
十、账本扩展方向
10.1 本地持久化
在 Family Grocery Account 中,本地持久化服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
10.2 提醒能力
在 Family Grocery Account 中,提醒能力服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
10.3 数据导出
在 Family Grocery Account 中,数据导出服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
十一、调试与验证
11.1 输入验证
在 Family Grocery Account 中,输入验证服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
11.2 交互验证
在 Family Grocery Account 中,交互验证服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
11.3 布局验证
在 Family Grocery Account 中,布局验证服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
账本页面的可靠感来自一致反馈:金额变了,统计要变;状态变了,颜色和数量也要变。
十二、性能与可维护性
12.1 性能特征
在 Family Grocery Account 中,性能特征服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
12.2 可维护性
在 Family Grocery Account 中,可维护性服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
12.3 代码风格
在 Family Grocery Account 中,代码风格服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
十三、完整代码片段串联
13.1 接口定义
interface LedgerItem {
title: string;
amount: number;
note: string;
flagged: boolean;
}
LedgerItem 是 Family Grocery Account 的账目数据契约,所有展示和计算都围绕它展开。
13.2 状态初始化
@State items: LedgerItem[] = [
{ title: 'Vegetables', amount: 46, note: 'Frequent list item', flagged: false },
{ title: 'Fruit', amount: 58, note: 'Week stats updated', flagged: false }
];
@State titleText: string = '';
@State amountText: string = '';
@State noteText: string = '';
@State alertOn: boolean = true;
@State status: string = 'Ledger ready';
默认数据让页面打开后立即具备业务语境,也方便验证统计结果。
13.3 统计方法
private totalAmount(): number {
let total = 0;
this.items.forEach((item: LedgerItem) => {
total += item.amount;
});
return total;
}
private flaggedCount(): number {
let count = 0;
this.items.forEach((item: LedgerItem) => {
if (item.flagged) {
count++;
}
});
return count;
}
统计方法只读取数组并返回结果,不直接修改状态,适合在 UI 中反复调用。
13.4 新增方法
private addItem(): void {
const amount = Number(this.amountText);
if (this.titleText.trim().length === 0 || !Number.isFinite(amount)) {
this.status = 'Enter title and valid amount';
return;
}
this.items = [{ title: this.titleText, amount: Math.round(amount), note: this.noteText.length > 0 ? this.noteText : 'No note yet', flagged: false }, ...this.items];
this.titleText = '';
this.amountText = '';
this.noteText = '';
this.status = 'Ledger item added';
}
新增方法完成金额转换、输入校验、数组插入、输入清空和状态提示。
13.5 切换方法
private toggleFlag(index: number): void {
this.items[index].flagged = !this.items[index].flagged;
this.items = [...this.items];
}
切换方法修改单条记录后重新展开数组,确保 ArkUI 能稳定刷新列表。
13.6 顶部 UI
Row({ space: 10 }) {
Column({ space: 4 }) {
Text('Week spend').fontSize(13).fontColor('#475569')
Text(String(this.totalAmount())).fontSize(24).fontWeight(FontWeight.Bold).fontColor('#B45309')
}.layoutWeight(1).padding(14).backgroundColor('#FEF3C7').borderRadius(8)
Column({ space: 4 }) {
Text('Flagged').fontSize(13).fontColor('#475569')
Text(this.flaggedCount() + '/' + this.items.length).fontSize(24).fontWeight(FontWeight.Bold).fontColor('#047857')
}.layoutWeight(1).padding(14).backgroundColor('#D1FAE5').borderRadius(8)
}.width('100%')
顶部 UI 把金额和状态比例放在第一屏,让用户先看关键指标。
13.7 输入 UI
Column({ space: 10 }) {
TextInput({ placeholder: 'Title', text: this.titleText })
.onChange((value: string) => this.titleText = value)
TextInput({ placeholder: 'Amount', text: this.amountText })
.type(InputType.Number)
.onChange((value: string) => this.amountText = value)
TextInput({ placeholder: 'Note', text: this.noteText })
.onChange((value: string) => this.noteText = value)
Button('Add item')
.height(42)
.width('100%')
.onClick(() => this.addItem())
}.padding(14).backgroundColor('#F1F5F9').borderRadius(8)
输入区保持三个字段,减少记录成本,同时保留足够的上下文。
13.8 列表 UI
ForEach(this.items, (item: LedgerItem, index: number) => {
Row() {
Toggle({ type: ToggleType.Checkbox, isOn: item.flagged })
.onChange(() => this.toggleFlag(index))
Column({ space: 6 }) {
Text(item.title).fontSize(18).fontWeight(FontWeight.Bold).fontColor('#111827')
Text(item.note).fontSize(14).fontColor('#475569')
}.layoutWeight(1).margin({ left: 8 })
Text(String(item.amount)).fontSize(18).fontWeight(FontWeight.Bold).fontColor('#B45309')
}.padding(14).backgroundColor(item.flagged ? '#DCFCE7' : '#FFFFFF').borderRadius(8).width('100%')
})
列表 UI 是主要操作区,既展示账目信息,也承载状态切换。
十四、业务扩展补充
14.1 分类筛选
在 Family Grocery Account 中,分类筛选服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
14.2 月份归档
在 Family Grocery Account 中,月份归档服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
14.3 金额排序
在 Family Grocery Account 中,金额排序服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
14.4 状态筛选
在 Family Grocery Account 中,状态筛选服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
14.5 趋势分析
在 Family Grocery Account 中,趋势分析服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
14.6 共享账本
在 Family Grocery Account 中,共享账本服务于家庭买菜账本这个具体场景,目标是让金额记录和标记状态同步可见。
页面通过 items 管理账目数组,通过 totalAmount() 汇总本周买菜支出,通过 flaggedCount() 统计已标记记录。
当用户新增或勾选记录时,@State 会推动顶部统计、列表金额和行背景同步刷新。
- 业务对象:家庭买菜账本
- 核心指标:本周买菜支出
- 关键方法:
totalAmount()、flaggedCount()、addItem()、toggleFlag()
十五、总结
15.1 技术收束
Family Grocery Account 用单页 ArkTS 代码完成了围绕家庭买菜账本的轻量账本应用。
项目通过 LedgerItem 建模,用 items 管理数组,再通过 totalAmount()、flaggedCount()、addItem() 和 toggleFlag() 形成完整交互闭环。
这种实现适合学习鸿蒙 ArkUI 的声明式开发,也适合作为后续接入本地存储、提醒和导出能力的原型基础。
15.2 实践价值
Family Grocery Account 用单页 ArkTS 代码完成了围绕家庭买菜账本的轻量账本应用。
项目通过 LedgerItem 建模,用 items 管理数组,再通过 totalAmount()、flaggedCount()、addItem() 和 toggleFlag() 形成完整交互闭环。
这种实现适合学习鸿蒙 ArkUI 的声明式开发,也适合作为后续接入本地存储、提醒和导出能力的原型基础。
15.3 最终结论
Family Grocery Account 用单页 ArkTS 代码完成了围绕家庭买菜账本的轻量账本应用。
项目通过 LedgerItem 建模,用 items 管理数组,再通过 totalAmount()、flaggedCount()、addItem() 和 toggleFlag() 形成完整交互闭环。
这种实现适合学习鸿蒙 ArkUI 的声明式开发,也适合作为后续接入本地存储、提醒和导出能力的原型基础。
{
"name": "Family Grocery Account",
"scene": "家庭买菜账本",
"metric": "本周买菜支出",
"statusField": "flagged"
}
hvigorw assembleHap
- 账目名称:Vegetables
- 金额指标:46元
- 备注说明:Frequent list item
相关资源:
更多推荐


所有评论(0)