鸿蒙掌上驾考宝典应用开发30:用户信息管理——AccountUtil 与华为账号体系
·
第30篇:用户信息管理——AccountUtil 与华为账号体系

一、引言
用户信息管理是应用的基础功能,包括用户登录、账号信息维护、个人资料展示等。DriverLicenseExam 项目通过 AccountUtil 工具类封装了华为账号体系和用户信息管理。本文将深入解析其实现。
二、账号数据模型
2.1 华为账号模型
// commons/commonLib/src/main/ets/utils/AccountUtil.ets
@ObservedV2
export class HuaweiAccountModel {
@Trace public openID: string = '';
@Trace public unionID: string = '';
@Trace public authCode?: string = '';
@Trace public idToken?: string = '';
@Trace public authorizationCode?: string = '';
@Trace public quickLoginAnonymousPhone?: string = '';
}
2.2 用户信息模型
@ObservedV2
export class UserInfoModel {
@Trace public avatar: string | Resource = $r('app.media.user_avatar');
@Trace public nickname: string | Resource = $r('app.string.user_name');
@Trace public phone: string = '';
}
三、AccountUtil 工具类
3.1 状态管理
@ObservedV2
export class AccountUtil {
private static _accountInfo: HuaweiAccountModel = AppStorageV2.connect(
HuaweiAccountModel,
AppStorageMap.HUAWEI_ACCOUNT,
() => new HuaweiAccountModel(),
)!;
private static _userInfo: UserInfoModel = AppStorageV2.connect(
UserInfoModel,
AppStorageMap.USER_INFO,
() => new UserInfoModel(),
)!;
}
3.2 核心方法
// 获取账号信息
public static getAccountInfo() {
return AccountUtil._accountInfo;
}
// 获取用户信息
public static getUserInfo() {
return AccountUtil._userInfo;
}
// 设置用户信息
public static setUserInfo(info: UserInfoModel) {
AccountUtil._userInfo.avatar = info.avatar;
AccountUtil._userInfo.nickname = info.nickname;
AccountUtil._userInfo.phone = info.phone;
}
// 退出登录
public static loginOut() {
AccountUtil._accountInfo.idToken = '';
AccountUtil._userInfo.avatar = $r('app.media.user_avatar');
AccountUtil._userInfo.nickname = $r('app.string.user_name');
AccountUtil._userInfo.phone = '';
}
四、用户信息页面
4.1 用户信息展示
// MineView.ets 中展示用户信息
Row() {
Image(AccountUtil.getUserInfo().avatar)
.width(56).height(56).borderRadius(28);
Column({ space: 4 }) {
Text(AccountUtil.getUserInfo().nickname)
.fontSize(18)
.fontFamily('鸿蒙黑体')
.fontWeight(FontWeight.Medium);
if (AccountUtil.getUserInfo().phone) {
Text(AccountUtil.getUserInfo().phone)
.fontSize(12)
.fontColor($r('app.color.font_primary'));
}
}
}
.onClick(() => {
if (AccountUtil.getAccountInfo().idToken === '') {
// 未登录,跳转登录页
this.jumpLoginPage('a000******00');
} else {
// 已登录,跳转个人信息页
this.vm.navStack.pushPathByName('PersonalInfo', undefined);
}
});
五、总结
AccountUtil 通过 @ObservedV2 + AppStorageV2 实现了账号信息的全局状态管理,支持华为账号登录、用户信息展示、退出登录等完整功能。
关键源码文件:
commons/commonLib/src/main/ets/utils/AccountUtil.ets— 账号工具products/entry/src/main/ets/pages/mine/MineView.ets— 用户信息展示products/entry/src/main/ets/pages/mine/PersonalInfo.ets— 个人信息编辑
更多推荐

所有评论(0)