Flutter+开源鸿蒙实战|智安盾电商溯源平台Day5 本地缓存+登录UI+全局美化(多版块落地)
本文基于Flutter+开源鸿蒙技术栈,聚焦智安盾电商溯源平台的功能优化与体验提升。Day5开发重点围绕本地数据缓存、登录UI搭建、全局视觉美化等6大版块展开,通过shared_preferences实现查询记录的本地存储,设计简约登录页面,并统一全局视觉风格。文章详细讲解了缓存工具类的封装、登录UI的实现要点以及鸿蒙多端适配的注意事项,确保项目从"能用"升级为"好用
Flutter+开源鸿蒙实战|智安盾电商溯源平台Day5 本地缓存+登录UI+全局美化(多版块落地)
欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net。
摘要
本文完全衔接Day4开发内容,基于Flutter+开源鸿蒙跨平台技术栈,聚焦智安盾项目“体验优化+数据留存”核心需求,落地多版块开发任务。全程口语化详细讲解、弱化冗余代码(仅保留核心关键片段),重点覆盖本地数据缓存、基础登录UI搭建、全局视觉美化、交互细节优化、鸿蒙多端适配升级、异常场景补充六大版块,既保证项目连贯性,又丰富功能维度,让APP从“能用”升级为“好用、好看”,适配鸿蒙手机、平板、DAYU200开发板全设备,贴合比赛、毕设、实际落地的多场景需求。
<!-- Schema.org 结构化数据 -->
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"BlogPosting",
"headline":"Flutter+开源鸿蒙实战 智安盾Day5 本地缓存+登录UI+全局美化",
"author":{"@type":"Person","name":"鸿蒙跨端开发者"},
"publisher":{"@type":"Organization","name":"CSDN开源鸿蒙跨平台社区"},
"datePublished":"2026-04-30",
"description":"智安盾Day5多版块开发,完成本地缓存、登录UI、全局美化、交互优化、鸿蒙适配升级,代码精简、文字详细,衔接前4天内容",
"keywords":"开源鸿蒙,OpenHarmony,Flutter跨平台,智安盾,本地缓存,登录UI,全局美化,鸿蒙适配升级"
}
</script>
一、前言
哈喽各位小伙伴,咱们继续连贯迭代Flutter+开源鸿蒙 智安盾实战系列,今天是Day5,也是咱们项目从“基础功能落地”向“体验优化+数据留存”过渡的关键一天!
回顾前4天的开发成果,咱们已经完成了项目的核心骨架和核心功能:Day1搭建项目环境、理清整体方案;Day2完成首页UI和核心入口,做好鸿蒙多端适配;Day3打通溯源查询全流程,解决鸿蒙网络请求的各种坑;Day4落地合规检测功能、搭建个人中心框架,打通四大主页面切换。
到Day4结束,咱们的APP已经能正常使用——消费者能查防伪、商家能做合规自查、所有页面能无缝跳转,但还有几个关键问题没解决:查询记录、检测记录一退出APP就消失(没有本地缓存);没有登录功能,无法区分用户身份、无法使用积分体系;整体视觉和交互还比较简陋,不够精致;部分鸿蒙适配细节还有优化空间。
所以今天Day5,咱们不开发新的核心功能,重点做“补短板、提体验、丰版块”,一口气落地6大版块,每一个版块都贴合实际使用需求,每一步都衔接前4天的内容,代码尽量精简,重点用文字讲清楚“为什么做、怎么做、鸿蒙端怎么适配”,确保新手也能看懂、能落地。
全程沿用前4天的组件、工具类、架构规范,不新增复杂依赖,不改动原有核心逻辑,只做优化和补充,让整个项目更完整、更精致、更贴合实际落地场景。
二、Day5 今日核心开发目标(多版块,不复杂)
今天的目标非常明确,聚焦“优化+补充”,落地6大版块,每一个版块都有明确的落地效果,全程连贯不脱节:
- 版块1:本地数据缓存(核心)—— 保存溯源查询历史、合规检测历史,退出APP不丢失,适配鸿蒙本地存储规范;
- 版块2:基础登录UI搭建—— 设计简约登录页面,包含账号输入、密码输入、登录按钮、忘记密码入口,预留登录逻辑接口;
- 版块3:全局视觉美化—— 统一配色体系、优化组件样式、添加页面过渡动画,让APP更精致,贴合合规溯源的专业调性;
- 版块4:交互细节优化—— 优化按钮点击反馈、输入框提示、弹窗样式,解决前4天遗留的交互生硬问题;
- 版块5:鸿蒙多端适配升级—— 补充大屏/开发板的细节适配,解决前4天测试中可能出现的布局、触控、显示问题;
- 版块6:异常场景补充—— 完善缓存失败、登录异常、数据清空等场景的提示,让APP容错率更高,体验更流畅。
三、前期衔接铺垫(重点梳理,避免脱节)
在开始今天的多版块开发前,先梳理前4天已经成型、今天可以直接复用/优化的内容,确保开发不脱节:
- 复用组件:自定义按钮、输入框、导航栏、底部导航、弹窗、加载动画,今天只做样式优化,不重写;
- 复用工具:网络请求工具类、数据模型规范、鸿蒙网络权限配置,今天新增本地缓存工具类;
- 已完成页面:首页、溯源查询、合规检测、个人中心四大页面,今天优化这些页面的视觉和交互;
- 适配基础:已实现的鸿蒙多端尺寸适配、触控优化,今天在此基础上升级细节。
特别提醒:今天的核心是“优化”,不是“重构”,所有新增内容都将无缝融入原有项目,不会影响前4天已经实现的功能,大家可以放心跟着操作。
四、版块1:本地数据缓存开发(核心版块,详细讲解)
4.1 缓存功能核心意义
为什么要做本地缓存?结合咱们智安盾的使用场景,有3个核心需求:
- 方便用户回顾:消费者查询过的防伪码、商家检测过的文案,不用每次都重新输入,退出APP再打开,历史记录依然存在;
- 减少网络请求:缓存历史数据后,用户再次查看历史记录时,不用重新调用接口,节省流量,同时提升鸿蒙开发板的运行流畅度(适配弱网/离线场景);
- 支撑积分体系:后续用户签到、查询溯源、做合规检测领积分,需要缓存用户积分数据,为后续功能铺垫。
4.2 缓存工具选型与鸿蒙适配
咱们选用shared_preferences库做本地缓存(Day1已经添加依赖,直接复用),这款库轻量、易用,完全适配鸿蒙设备,不需要额外做复杂配置,适合保存查询记录、检测记录、积分等简单数据。
为什么不选其他缓存方式?比如SQLite,对于咱们目前的缓存需求(简单的列表数据、基础用户数据),shared_preferences足够用,而且更轻量,不会增加鸿蒙开发板的资源占用,后期如果需要保存更复杂的数据,再扩展即可。
4.3 缓存工具类封装(核心代码,精简版)
新建lib/utils/cache_util.dart,封装全局缓存工具类,统一实现“保存缓存、获取缓存、清空缓存”三个核心方法,所有页面都能直接复用,代码精简且规范:
import 'package:shared_preferences/shared_preferences.dart';
// 鸿蒙适配版本地缓存工具类(全局通用)
class CacheUtil {
// 单例模式,避免重复创建,节省鸿蒙设备资源
static final CacheUtil _instance = CacheUtil._internal();
factory CacheUtil() => _instance;
late SharedPreferences _prefs;
// 初始化缓存(在APP启动时调用,Day1的main.dart中添加)
Future<void> init() async {
_prefs = await SharedPreferences.getInstance();
}
// 1. 保存缓存(通用方法,支持所有简单数据类型)
Future<bool> setCache(String key, dynamic value) async {
try {
if (value is String) return await _prefs.setString(key, value);
if (value is int) return await _prefs.setInt(key, value);
if (value is bool) return await _prefs.setBool(key, value);
if (value is List<String>) return await _prefs.setStringList(key, value);
return false;
} catch (e) {
debugPrint("鸿蒙本地缓存保存失败:$e");
return false;
}
}
// 2. 获取缓存(通用方法,根据key获取对应数据)
dynamic getCache(String key) {
try {
return _prefs.get(key);
} catch (e) {
debugPrint("鸿蒙本地缓存获取失败:$e");
return null;
}
}
// 3. 清空指定缓存(比如清空某类历史记录)
Future<bool> removeCache(String key) async {
try {
return await _prefs.remove(key);
} catch (e) {
debugPrint("鸿蒙本地缓存清空失败:$e");
return false;
}
}
}
4.4 缓存功能落地(衔接前序功能)
将缓存工具类与前4天的核心功能结合,实现2个核心缓存场景,文字详细讲解操作逻辑,代码精简:
- 溯源查询记录缓存:在Day3的溯源查询逻辑中,查询成功后,自动将防伪码、商品名称、查询时间保存到本地缓存,代码只需要添加3行(在跳转结果页之前);
- 合规检测记录缓存:在Day4的合规检测逻辑中,检测成功后,自动将检测文案、风险等级、检测时间保存到本地缓存,同样只需要添加少量代码;
- 缓存展示:在个人中心的“我的溯源记录”“合规检测历史”菜单中,添加缓存数据读取逻辑,展示历史记录,用户点击可重新查看详情。
4.5 鸿蒙缓存适配避坑细节
- 初始化时机:必须在APP启动时初始化缓存(在main.dart中调用CacheUtil().init()),否则会导致缓存保存/获取失败,这是鸿蒙设备缓存的常见坑;
- 数据类型规范:缓存的数据类型必须是简单类型(字符串、数字、布尔值),不能直接缓存对象(比如TraceModel),需要先将对象转为字符串(JSON格式化),再进行缓存;
- 缓存容量控制:鸿蒙开发板的本地存储容量有限,不要缓存过多数据,比如只保存最近10条查询/检测记录,避免占用过多资源。
五、版块2:基础登录UI搭建(简约实用,预留拓展)
5.1 登录页面设计思路(贴合项目定位)
登录页面是用户身份区分的核心,咱们的设计原则是“简约、实用、适配鸿蒙多设备”,不做复杂设计,重点满足2个需求:
- 基础登录功能:账号(手机号/邮箱)输入、密码输入、登录按钮,满足普通用户、商家用户的登录需求;
- 预留拓展入口:忘记密码、注册入口,为后续账号注册、密码找回功能铺垫;
- 鸿蒙适配:放大输入框、按钮尺寸,适配开发板触控,文字清晰,操作简单,长辈也能轻松使用。
5.2 登录页面开发(核心UI,代码精简)
新建lib/pages/login_page.dart,复用前4天的自定义输入框、按钮组件,只编写核心布局代码,重点讲解布局逻辑和鸿蒙适配:
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:zhiandun_app/widgets/app_bar.dart';
import 'package:zhiandun_app/widgets/custom_button.dart';
import 'package:zhiandun_app/widgets/custom_input.dart';
// 登录页面(鸿蒙多端适配,简约版)
class LoginPage extends StatelessWidget {
final TextEditingController _accountController = TextEditingController();
final TextEditingController _pwdController = TextEditingController();
LoginPage({super.key});
Widget build(BuildContext context) {
final isDayuOrTablet = MediaQuery.of(context).size.width >= 600;
return Scaffold(
// 复用全局导航栏,添加返回按钮,标题为“账号登录”
appBar: CustomAppBar(title: '账号登录', showBack: true),
body: SingleChildScrollView(
padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 40.h),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
// 登录标题(鸿蒙适配:大屏放大文字)
Text(
'智安盾账号登录',
style: TextStyle(
fontSize: isDayuOrTablet ? 24.sp : 20.sp,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 40.h),
// 账号输入框(复用自定义输入框,提示文字改为“请输入手机号/邮箱”)
CustomInput(
controller: _accountController,
hintText: '请输入手机号/邮箱',
),
SizedBox(height: 20.h),
// 密码输入框(新增密码隐藏/显示功能)
CustomInput(
controller: _pwdController,
hintText: '请输入密码',
obscureText: true, // 密码隐藏
),
SizedBox(height: 16.h),
// 忘记密码入口(鸿蒙适配:放大文字,提升点击区域)
Align(
alignment: Alignment.centerRight,
child: TextButton(
onPressed: () {
// 预留忘记密码逻辑,今天只做UI
},
child: Text(
'忘记密码?',
style: TextStyle(
fontSize: isDayuOrTablet ? 16.sp : 14.sp,
),
),
),
),
SizedBox(height: 40.h),
// 登录按钮(复用自定义按钮,放大尺寸,适配鸿蒙触控)
CustomButton(
text: '立即登录',
onTap: () {
// 预留登录逻辑,今天只做UI,后续对接缓存和接口
},
),
SizedBox(height: 20.h),
// 注册入口(鸿蒙适配:文字清晰,点击区域足够)
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'还没有账号?',
style: TextStyle(fontSize: isDayuOrTablet ? 14.sp : 12.sp),
),
TextButton(
onPressed: () {
// 预留注册逻辑,今天只做UI
},
child: Text(
'立即注册',
style: TextStyle(
fontSize: isDayuOrTablet ? 14.sp : 12.sp,
color: Color(0xFF36CFC9),
),
),
),
],
),
],
),
),
);
}
}
5.3 登录页面与个人中心衔接
在个人中心的“用户信息卡片”中,添加“去登录”按钮:如果用户未登录,点击按钮跳转至登录页面;如果用户已登录(后续实现),则显示用户信息,实现页面之间的无缝衔接,完善用户体验。
5.4 鸿蒙适配重点
- 触控优化:登录按钮、忘记密码、注册入口的点击区域放大,尤其是开发板,确保点击灵敏,不误触;
- 文字适配:所有文字尺寸根据设备尺寸自动缩放,开发板/平板放大,避免文字过小看不清;
- 布局适配:使用SingleChildScrollView,避免小屏设备输入时,页面被键盘遮挡,提升输入体验。
六、版块3:全局视觉美化(多细节优化,文字详细)
这一版块重点提升APP的“颜值”,不写复杂代码,主要做样式优化和细节调整,让整个APP风格统一、精致,贴合合规溯源的专业调性,分4个小细节落地:
6.1 统一全局配色体系(核心美化)
前4天咱们的配色比较随意,今天统一配色,确定3种核心颜色,所有组件、页面都沿用这套配色,保持风格统一:
- 主色调:青绿色(#36CFC9)—— 代表安全、专业,贴合溯源、合规的产品定位,用于按钮、选中状态、重点提示;
- 辅助色:浅灰色(#F5F7FA)—— 用于页面背景、卡片背景,提升视觉层次感,避免页面过于单调;
- 警示色:红色(#F53F3F)、黄色(#FFAA00)—— 红色用于高风险提示、错误提示,黄色用于中风险提示,绿色(主色调延伸)用于低风险、成功提示。
优化方式:修改前4天自定义组件(按钮、输入框、卡片)的颜色,统一替换为新的配色,不需要新增代码,只修改原有组件的颜色参数,确保所有页面配色统一。
6.2 组件样式优化
- 按钮优化:给按钮添加轻微阴影,点击时添加缩放效果(点击缩小、松开恢复),提升点击反馈,避免交互生硬;
- 输入框优化:聚焦时边框颜色改为主色调,添加轻微阴影,未聚焦时边框颜色改为浅灰色,区分状态,提升视觉体验;
- 卡片优化:给首页、个人中心的功能卡片添加统一的阴影和圆角,避免卡片过于扁平,提升层次感;
- 图标优化:统一所有页面的图标样式,使用Material Icons图标库,颜色与全局配色匹配,避免图标杂乱。
6.3 页面过渡动画
给所有页面跳转添加简单的过渡动画(滑动过渡),避免页面跳转过于生硬,提升交互流畅度:
- 跳转至溯源结果页、合规检测结果页:从右向左滑动;
- 跳转至登录页面:从下向上滑动;
- 返回上一页:从左向右滑动。
实现方式:修改页面跳转的MaterialPageRoute,添加transitionDuration参数,设置动画时长(300毫秒),代码非常精简,只需要在跳转代码中添加1行配置。
6.4 文字样式统一
统一所有页面的文字样式,区分标题、正文、提示文字,确保视觉清晰、层次分明:
- 标题:字体加粗,尺寸较大(手机18sp,开发板/平板22sp);
- 正文:字体常规,尺寸适中(手机14sp,开发板/平板16sp);
- 提示文字:字体常规,颜色为浅灰色(#999999),尺寸略小(手机12sp,开发板/平板14sp)。
七、版块4:交互细节优化(提升体验,无复杂代码)
这一版块重点解决前4天遗留的“交互生硬”问题,不新增核心功能,只做细节调整,让用户使用更流畅、更舒适,分5个小细节落地,文字详细讲解优化思路:
7.1 按钮点击反馈优化
前4天的按钮点击没有明显反馈,用户可能会误以为“点击没反应”,今天优化2点:
- 点击缩放:按钮点击时轻微缩小(缩放比例0.95),松开后恢复原样,直观反馈“点击有效”;
- 颜色变化:按钮点击时,主色调轻微变深,增强视觉反馈,尤其是鸿蒙开发板,用户能清晰感知点击状态。
实现方式:在自定义按钮组件中,添加GestureDetector的onTapDown、onTapUp、onTapCancel事件,控制按钮的缩放和颜色变化,代码精简,不影响原有功能。
7.2 输入框交互优化
- 输入提示优化:输入框获取焦点时,提示文字向上移动、缩小,提升视觉体验,避免提示文字与输入内容重叠;
- 输入校验优化:在密码输入框中,添加密码强度提示(弱/中/强),引导用户设置安全密码;
- 键盘适配:输入完成后,点击键盘“完成”按钮,自动收起键盘,避免用户手动点击空白处收起,提升输入效率。
7.3 弹窗样式优化
前4天的弹窗样式比较简单,今天统一优化弹窗样式,贴合全局配色:
- 弹窗标题:使用主色调,字体加粗;
- 弹窗内容:字体适中,颜色为深灰色,清晰易读;
- 弹窗按钮:确认按钮使用主色调,取消按钮使用浅灰色,区分按钮功能,提升交互清晰度;
- 弹窗圆角:统一弹窗圆角为8r,避免直角弹窗过于生硬,贴合整体视觉风格。
7.4 列表交互优化
在个人中心的“我的溯源记录”“合规检测历史”列表中,添加2个交互细节:
- 滑动删除:用户可以滑动列表项,删除不需要的历史记录,删除后自动更新缓存;
- 点击反馈:列表项点击时,添加轻微的背景色变化,反馈“点击有效”,适配鸿蒙开发板的触控体验。
7.5 加载动画优化
前4天的加载动画是默认的圆形进度条,今天优化2点:
- 颜色优化:将加载动画的颜色改为主色调,贴合全局配色;
- 文字补充:在加载动画下方添加“加载中…”文字提示,尤其是鸿蒙弱网环境下,让用户知道“APP正在工作,不是卡死”,提升用户耐心。
八、版块5:鸿蒙多端适配升级(细节补充,避坑)
前4天我们已经实现了鸿蒙多端适配的基础功能,今天重点补充细节,解决测试中可能出现的问题,让适配更完善,分4个重点优化:
8.1 开发板适配补充
- 触控精度优化:进一步加大所有可点击组件(按钮、列表、输入框)的触控区域,确保开发板触控不灵敏时,也能准确点击;
- 横屏布局优化:在开发板横屏显示时,调整首页、合规检测页的布局,充分利用大屏空间,避免布局空洞;
- 性能优化:关闭开发板上的所有非必要动画(比如页面过渡动画、按钮缩放动画),减少资源占用,确保开发板运行流畅,不卡顿。
8.2 平板适配补充
- 卡片布局优化:平板端首页的功能卡片改为3列布局,合规检测页的输入框和按钮改为横向布局,充分利用大屏空间;
- 文字适配优化:平板端的文字尺寸进一步放大,标题改为24sp,正文改为18sp,确保远距离观看也能清晰可读;
- 边距优化:平板端页面的左右边距加大,避免内容过于拥挤,提升视觉舒适度。
8.3 鸿蒙状态栏适配升级
前4天的状态栏适配的是浅色模式,今天补充深色模式适配:
- 当鸿蒙设备开启深色模式时,自动切换状态栏文字颜色为白色,导航栏背景色改为深灰色,避免状态栏文字与背景重叠,确保显示清晰;
- 适配鸿蒙系统的状态栏高度,不同鸿蒙设备的状态栏高度不同,通过MediaQuery自动获取,避免导航栏与状态栏重叠。
8.4 鸿蒙权限补充
除了前3天配置的网络权限,今天新增2个必要权限,适配鸿蒙设备的本地缓存和后续功能:
- 本地存储权限:在module.json5中添加ohos.permission.READ_USER_STORAGE、ohos.permission.WRITE_USER_STORAGE权限,用于本地缓存数据的读取和写入;
- 权限申请优化:当APP首次启动时,弹出权限申请弹窗,文字说明清晰(比如“需要本地存储权限,用于保存您的查询记录和检测历史”),让用户明白权限用途,提升权限申请通过率。
九、版块6:异常场景补充(完善容错,提升稳定性)
前4天我们已经处理了部分异常场景(网络异常、输入为空),今天补充更多异常场景,让APP的容错率更高,避免出现崩溃、卡死等问题,分4个场景落地:
9.1 缓存异常场景
- 缓存保存失败:当鸿蒙设备本地存储不足、缓存初始化失败时,弹出友好提示(“本地存储不足,无法保存历史记录,请清理设备空间后重试”);
- 缓存读取失败:当读取历史记录时,缓存数据损坏或不存在,弹出提示(“暂无历史记录”),避免页面空白或崩溃。
9.2 登录异常场景
- 账号/密码为空:点击登录按钮时,若账号或密码为空,弹出提示(“请输入账号和密码”);
- 登录失败提示:后续实现登录逻辑后,若账号密码错误、网络异常,弹出对应提示,避免用户不知道登录失败的原因。
9.3 数据清空场景
在个人中心添加“清空历史记录”按钮,点击后弹出确认弹窗(“确定要清空所有历史记录吗?清空后无法恢复”),避免用户误操作清空数据;清空成功后,弹出提示(“历史记录已清空”),让用户确认操作结果。
9.4 页面异常场景
- 页面跳转失败:当页面跳转时,若出现路由异常,弹出提示(“页面加载失败,请重试”),避免页面卡死;
- 数据加载异常:当读取缓存数据、请求接口时,出现异常,弹出提示,同时显示空白页面提示,避免页面错乱。
十、Day5 开发总结(多版块复盘,连贯梳理)
今天Day5,咱们一口气落地了6大版块,没有开发新的核心功能,但却让咱们的智安盾APP实现了“质的飞跃”——从“能用”升级为“好用、好看、稳定”,全程衔接前4天的内容,没有脱节,每一个优化都贴合实际使用需求。
详细总结今天的6大版块成果,回顾整个项目的迭代过程:
- 版块1(本地缓存):解决了“历史记录丢失”的问题,实现溯源、合规检测记录的本地保存,减少网络请求,适配鸿蒙本地存储规范,为后续积分体系铺垫;
- 版块2(登录UI):搭建了简约实用的登录页面,预留登录、注册、忘记密码逻辑,实现与个人中心的衔接,完成用户身份区分的基础铺垫;
- 版块3(全局美化):统一配色、优化组件样式、添加过渡动画、统一文字样式,让APP更精致、风格更统一,贴合合规溯源的专业调性;
- 版块4(交互优化):解决了前4天遗留的交互生硬问题,优化按钮反馈、输入体验、弹窗样式、列表交互,让用户使用更流畅、更舒适;
- 版块5(鸿蒙适配升级):补充开发板、平板的适配细节,优化状态栏适配、权限配置,解决可能出现的触控、布局、性能问题,确保多设备稳定运行;
- 版块6(异常补充):完善缓存、登录、数据清空、页面跳转等异常场景的提示,提升APP容错率,避免崩溃、卡死,增强稳定性。
从Day1的空白工程,到Day5的多版块完善,咱们的智安盾项目已经成为一款“功能完整、体验良好、适配鸿蒙生态”的跨平台实战项目——消费者能查防伪、看历史;商家能做合规自查、存记录;整体UI精致、交互流畅、多设备适配完善,完全满足课程设计、双创比赛、实际落地的需求。
十一、下期内容预告(Day6)
Day6我们将进入项目“收尾优化+功能拓展”阶段,重点做3件事:
- 实现登录核心逻辑,对接本地缓存,完成“登录/退出”功能,区分普通用户、商家用户身份;
- 落地积分体系基础功能,实现签到领积分、查询/检测得积分,对接个人中心积分面板;
- 项目整体测试、bug修复,优化鸿蒙设备运行性能,整理项目结构,为演示、答辩、部署做准备。
更多推荐




所有评论(0)