Flutter+开源鸿蒙实战|智安盾电商溯源平台Day6 登录逻辑+积分体系+全局收尾优化
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net。
摘要
本文严格衔接Day5内容,基于Flutter+开源鸿蒙 跨端技术栈,完成智安盾项目第六天核心开发。全文版块多、讲解细、代码极精简 (每段只放重点5--6行),重点实现:登录校验逻辑、本地缓存登录态、积分获取与展示、签到功能、全局BUG修复、鸿蒙性能优化。全程保持口语化、零基础友好,让项目真正达到可演示、可答辩、可上线标准,完美适配鸿蒙手机/平板/DAYU200开发板。
html
<!-- Schema.org 结构化数据 -->
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"BlogPosting",
"headline":"Flutter+开源鸿蒙实战 智安盾Day6 登录逻辑+积分体系+全局收尾",
"author":{"@type":"Person","name":"鸿蒙跨端开发者"},
"publisher":{"@type":"Organization","name":"CSDN开源鸿蒙跨平台社区"},
"datePublished":"2026-05-01",
"description":"智安盾Day6:登录逻辑、登录态保持、积分体系、签到功能、全局BUG修复、鸿蒙性能优化,代码少、版块细、连贯性强",
"keywords":"开源鸿蒙,OpenHarmony,Flutter跨端,智安盾,登录逻辑,积分体系,鸿蒙优化,项目收尾"
}
</script>
一、前言
哈喽小伙伴,我们来到智安盾实战Day6------项目收官日!
先快速回顾我们前5天成果:
Day1搭建环境 → Day2首页UI → Day3溯源查询 → Day4合规检测 → Day5缓存+登录UI+全局美化。
今天我们补齐最后两块核心业务:
- 登录逻辑 + 持久化登录态(退出APP再进来不用重新登录)
- 积分体系 + 签到功能(查询得积分、检测得积分、签到得积分)
同时完成:
- 全局BUG修复
- 鸿蒙性能优化
- 页面跳转统一规范
- 最终项目可直接交付比赛/毕设/演示
依旧遵守你的要求:
✅ 版块多
✅ 文字详细
✅ 每块代码只放重点5--6行
✅ 全程连贯不脱节

二、Day6 核心开发目标
- 实现登录校验逻辑(账号密码非空/错误提示)
- 接入本地缓存保存登录态(鸿蒙重启不丢失)
- 完成个人中心登录/退出切换
- 开发积分体系:查询溯源+10分、合规检测+15分
- 实现每日签到功能(签到+5分,一天一次)
- 鸿蒙端性能优化、页面卡顿修复、触控优化
- 全局统一路由、提示、样式,项目最终成型
三、版块1:登录逻辑实现
直接复用Day5的登录页面,只加核心逻辑。
核心登录校验(精简代码)
dart
void doLogin() {
String account = _accountCtrl.text.trim();
String pwd = _pwdCtrl.text.trim();
if (account.isEmpty || pwd.isEmpty) {
showToast("请输入账号密码"); // 提示
return;
}
// 登录成功→保存状态→跳转首页
CacheUtil().setCache("isLogin", true);
}
功能说明
- 判断账号密码是否为空
- 为空则提示
- 登录成功后把状态存入缓存
- 鸿蒙重启依然保持登录状态
四、版块2:登录态持久化
核心代码(5行)
dart
bool isLogin = false;
@override
void initState() {
super.initState();
isLogin = CacheUtil().getCache("isLogin") ?? false;
}
作用
- 打开APP自动读取是否登录
- 已登录 → 显示用户名、积分
- 未登录 → 显示「去登录」按钮
这是鸿蒙APP必备功能,非常加分。
五、版块3:退出登录功能
dart
void doLogout() {
CacheUtil().removeCache("isLogin");
setState(() => isLogin = false);
showToast("退出成功");
}
非常干净、轻量,适配鸿蒙所有设备。
六、版块4:积分体系开发
积分规则:
- 溯源查询 +10
- 合规检测 +15
- 每日签到 +5
积分增加逻辑(精简)
dart
void addPoints(int add) {
int current = CacheUtil().getCache("points") ?? 0;
CacheUtil().setCache("points", current + add);
setState(() {});
}
调用位置
- 溯源成功 →
addPoints(10) - 合规检测成功 →
addPoints(15)

七、版块5:每日签到功能
dart
void signIn() {
String today = DateFormat("yyyy-MM-dd").format(DateTime.now());
String last = CacheUtil().getCache("lastSign") ?? "";
if (today != last) {
addPoints(5);
CacheUtil().setCache("lastSign", today);
}
}
功能说明
- 每天只能签到一次
- 签到成功+5分
- 缓存记录最后签到日期
- 鸿蒙设备日期同步有效
八、版块6:个人中心积分面板展示
展示代码(5行)
dart
int points = CacheUtil().getCache("points") ?? 0;
Text(
"当前积分:$points",
style: TextStyle(fontSize: 20.sp, fontWeight: FontWeight.bold),
)
清爽、直观、鸿蒙多端适配。
九、版块7:全局统一提示(Toast)
统一提示工具(5行)
dart
void showToast(String msg) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(msg), duration: Duration(seconds: 1)),
);
}
整个APP所有提示统一风格,非常专业。
十、版块8:鸿蒙性能优化(必看)
1)减少组件重建
dart
const构造函数 + Key
2)关闭多余动画
dart
animation: false
3)加大触控区域(鸿蒙开发板)
dart
height: 48.h
minWidth: 48.w
4)优化列表滑动流畅度
dart
cacheExtent: 100
physics: BouncingScrollPhysics()
让你的APP在DAYU200上丝滑流畅。
十一、版块9:全局BUG修复(实战必学)
1)输入框被键盘遮挡
dart
SingleChildScrollView
2)鸿蒙返回键闪退
dart
WillPopScope
3)缓存为空崩溃
dart
?? "" / ?? 0 / ?? false
4)页面重复跳转
dart
if(!mounted) return;
这些都是比赛/毕设高分细节。
十二、版块10:最终项目结构展示(清晰)
lib/
├── main.dart 启动+缓存初始化
├── pages/ 四大页面+登录
├── widgets/ 全局UI组件
├── utils/ 网络、缓存、工具
└── models/ 数据结构
标准Flutter+鸿蒙项目结构,评委一看就懂。

十三、Day6 开发总结
今天我们完整收官智安盾项目!
你已经真正掌握:
✅ 登录逻辑 + 登录态持久化(鸿蒙必备)
✅ 积分体系 + 每日签到(比赛超级加分)
✅ 本地缓存完整应用
✅ 鸿蒙性能优化、BUG修复
✅ 全局统一风格、交互、提示

十四、最终项目全部功能清单(可直接写进论文)
- 鸿蒙跨端适配(手机/平板/开发板)
- 商品防伪溯源查询
- 跨境合规风险检测
- 历史记录本地缓存
- 账号登录/退出
- 积分成长体系
- 每日签到
- 风险等级可视化(绿黄红)
- 全局统一UI/交互
- 鸿蒙网络权限、存储权限、性能优化