
【时间盒子】-【13.任务新建】创建新任务 原创
Tips:
@Watch、@Provide:对状态变量的监听。请参考我的帖子:https://developer.huawei.com/consumer/cn/forum/topic/0208152234389094513?fid=0101587866109860105
router:页面路由。请参考官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-router-0000001820880773#ZH-CN_TOPIC_0000001811317158__routerpushurl9
promptAction:创建并显示文本提示框。请参考官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-promptaction-V5#promptactionshowtoast
一、预览
回顾【6.任务页面】内容,Detail页面布局中遗留的todo 待完善的组件。本篇我们把已设计好的组件添加到该页面。
- 标题菜单栏
- 时间选择器
- 任务设置项
二、标题菜单栏
因为新增、修改都共用这个页面,所以标题文字需动态改变。我们定义一个属性变量isNew,判断是否新增,是则标题显示“新建任务”,否则显示“修改任务”。
另外,还需定义打勾按钮事件:保存任务。首先判断任务名称是否为空,是空则吐司toast提示;不为空时,才能保存。将任务保存到本地(数据持久化+后台代理提醒,见后续篇章),且保存成功后返回上一页面(任务列表页)。
定义一个数据工具类DataUtil,用来判断数据为NULL或空值。右击目录utils >> 新建 >> ArkTS File,文件命名为DataUtil。
定义一个判断是否为空的函数isNull,返回布尔值类型。DataUtil.ets文件代码如下:
定义一个属性变量taskModel,用来缓存新建的任务实体。页面中的任务名称、任务时长对应实体对象taskModel的name属性和duration属性。并且,监听taskModel对象的变化,当发生变化时回调函数onTaskModelChangeHandler进行处理。Detail.ets文件代码如下:
三、时间选择器
我们在【8.时间选择器】文章中有介绍时间选择器,把DateSelector组件添加到页面布局中,Detail.ets文件增加的代码如下:
四、任务设置项
我们在【9.任务设置项】文章中有介绍任务设置项,把SettingList组件添加到页面布局中,且需要传入参数settingItems值,这个参数值就是任务设置项数组taskSettingItems,含两个对象:任务名称和任务时长。
并且,taskModel对象发生变化时,同时影响taskSettingItems;设置任务名称、任务时长,taskSettingItems发生改变,也影响taskModel对象的值。
我们定义一个方法initData(),初始化任务设置项。并且被监听taskModel变化的onTaskModelChangeHandler回调函数中调用。
Detail.ets文件完整的代码如下:
五、其他文件更新的内容
string.json文件
代码如下:
media目录
将附件icon_confirm.png添加到media目录中。
下一篇:任务编辑
