当前位置: 首页 > news >正文

鸿蒙原生开发实战:打造“食遇“情侣菜谱点餐应用

鸿蒙原生开发实战:打造"食遇"情侣菜谱点餐应用系列文章

第一篇章

项目背景

在日常生活中,情侣之间经常面临"今天吃什么"的难题。作为主厨的一方需要思考菜谱、准备食材,而另一方则期待美味的佳肴。为了解决这个甜蜜的烦恼,我基于鸿蒙原生开发技术,打造了一款名为"食遇"的情侣菜谱点餐应用。

应用简介

"食遇"是一款专为情侣设计的菜谱管理与点餐应用,采用角色分离设计,分为"主厨"和"食客"两种角色:

  • 主厨角色:管理菜谱、查看订单、制作美食、记录美食时刻
  • 食客角色:浏览菜谱、下单点餐、查看订单状态、欣赏美食相册

应用采用鸿蒙原生开发,使用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})}}
http://www.jsqmd.com/news/1138422/

相关文章:

  • 收藏!小白程序员轻松入门大模型,抓住AI时代红利!
  • 做了五年React,我转型做了AI应用前端
  • 2026年智洋创新嵌入式岗位面试题集(含参考答案)
  • 【VLC player 下载地址】
  • 【Bug已解决】OpenClaw macOS 报错 Operation not permitted 完全磁盘访问权限解决方案
  • 为什么90%的企业AI培训没效果?2026九尾狐AI实战陪跑趋势解读
  • 没人买单的故事,讲完了
  • c++复习自存--类型转换运算符、宏和模板
  • 掌握microG非官方安装器的7个关键步骤:从开源替代到完整功能部署
  • 百度网盘秒传工具:一站式在线文件管理解决方案
  • ADRC vs PI 速度控制对比:永磁同步电机在变负载下5项性能指标实测
  • 【Bug已解决】OpenClaw Webhook 回调地址不可达导致触发器失效解决方案
  • 巧用小顶堆求解第 K 大元素,两道经典题一通百通
  • 3步掌握DLSS Swapper:游戏画质升级的终极神器
  • CBAM 注意力模块 PyTorch 实战:3 步集成 ResNet-50,ImageNet 精度提升 1.2%
  • UL 1069-2024新版护士呼叫设备安全标准,这些技术更新必须吃透
  • 【Bug已解决】Claude Code Bedrock 报错 cache_control scope 字段不支持解决方案
  • 【Bug已解决】Claude Code 报错 Claude‘s response exceeded the 32000 output token limit 解决方案
  • 抖音无水印下载神器:一键批量保存视频、图集和直播内容
  • Agent 上生产的最后一公里:权限、发布、回滚和版本治理
  • 从CrackMe入门逆向工程:figugegl系列算法分析与注册机编写实战
  • 2026年亲测一键生成论文工具榜单(高效定稿版)
  • 记一次 PDF 转 Word 服务频繁崩溃的排查与解决:Java 堆内存并不是全部
  • PyTorch 实现 Nesterov 加速梯度:3 个关键参数调优与 SGD+Momentum 对比实验
  • API 香是香,但从Vue2迁移时你可别像我当初一样踩进这 3 个深坑里
  • 【小白笔记】VS Code安装附加选项逐行解释
  • Audacity音频编辑:从录音小白到剪辑高手的完整指南
  • Agent 工程化新底座:用 CLI 契约层打通 HTTP 接口与业务能力
  • 【单片机毕业设计】基于 STC89C52 的水质温浊监测报警系统设计, 基于 51 单片机的水质多参数检测控制器开发(018101)
  • AI智能体白盒测试实战:从单元测试到集成测试的完整方案