鸿蒙原生开发实战:打造“食遇“情侣菜谱点餐应用
鸿蒙原生开发实战:打造"食遇"情侣菜谱点餐应用系列文章
第一篇章
项目背景
在日常生活中,情侣之间经常面临"今天吃什么"的难题。作为主厨的一方需要思考菜谱、准备食材,而另一方则期待美味的佳肴。为了解决这个甜蜜的烦恼,我基于鸿蒙原生开发技术,打造了一款名为"食遇"的情侣菜谱点餐应用。
应用简介
"食遇"是一款专为情侣设计的菜谱管理与点餐应用,采用角色分离设计,分为"主厨"和"食客"两种角色:
- 主厨角色:管理菜谱、查看订单、制作美食、记录美食时刻
- 食客角色:浏览菜谱、下单点餐、查看订单状态、欣赏美食相册
应用采用鸿蒙原生开发,使用ArkTS语言和ArkUI框架,充分利用鸿蒙系统的分布式能力和流畅体验。
技术架构
1. 数据持久化
应用使用鸿蒙关系型数据库(RDB)进行数据持久化,设计了以下数据表:
// 数据库初始化staticasyncinit(context:Context):Promise<void>{constconfig:relationalStore.StoreConfig={name:'MenuRecipe.db',securityLevel:relationalStore.SecurityLevel.S1}RdbUtil.rdbStore=awaitrelationalStore.getRdbStore(context,config)awaitRdbUtil.createTables()}数据表包括:
couple_config:情侣配置表recipe:菜谱基础信息表recipe_material:食材表recipe_step:制作步骤表order_record:订单记录表gallery_img:美食相册表
2. 启动页设计
启动页负责应用初始化,包括数据库初始化、配置检查等,并通过进度条展示加载状态:
@Entry@Componentstruct SplashPage{@Stateprogress:number=0privatecontext:common.UIAbilityContext|null=nullasyncinitApp(){// 更新进度:10%this.progress=10awaitthis.sleep(100)// 初始化数据库awaitRdbUtil.init(this.context!)// 更新进度:50%this.progress=50awaitthis.sleep(100)// 检查配置并跳转consthasConfig=awaitthis.checkCoupleConfig()this.progress=100router.replaceUrl({url:'pages/RoleSelectPage'})}}3. 角色选择页
用户首次使用时选择自己的角色(主厨或食客),不同角色将看到不同的功能界面:
@Entry@Componentstruct RoleSelectPage{@StateselectedRole:string=''build(){Column(){// 标题Text('选择你的角色').fontSize(24).fontWeight(FontWeight.Bold)// 角色卡片Row(){// 主厨卡片this.RoleCard('主厨','🍳','chef')// 食客卡片this.RoleCard('食客','🍽','diner')}// 确认按钮Button('确认选择').onClick(()=>{this.saveRoleAndNavigate()})}}@BuilderRoleCard(title:string,icon:string,role:string){Column(){Text(icon).fontSize(60)Text(title).fontSize(20)}.borderRadius(16).backgroundColor(this.selectedRole===role?'#FFE4E1':'#FFFFFF').onClick(()=>{this.selectedRole=role})}}