多账号管理应用


欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net

适配的第三方库地址:

  • google_sign_in: https://pub.dev/packages/google_sign_in
  • local_auth: https://pub.dev/packages/local_auth
  • shared_preferences: https://pub.dev/packages/shared_preferences
  • encrypt: https://pub.dev/packages/encrypt

一、项目概述

运行效果图

image-20260412153022508

image-20260412153849539

image-20260412153857083

image-20260412153902971

1.1 应用简介

多账号管理是一款安全便捷的账号管理应用,支持管理多个账号、账号切换、账号信息展示,以及安全设置。应用以高贵的紫色为主色调,象征安全与信任。涵盖账号管理、分类浏览、设置中心三大模块。用户可以安全存储各类账号信息、快速切换账号、保护隐私安全,让账号管理更加轻松便捷。

1.2 核心功能

功能模块功能描述实现方式
账号管理添加、编辑、删除账号本地存储
账号切换快速切换不同账号状态管理
信息展示展示账号详细信息详情页面
安全设置生物识别保护隐私local_auth
数据加密密码加密存储encrypt
分类管理按类型分类账号分类筛选
收藏功能收藏常用账号收藏标记
搜索功能快速搜索账号关键词匹配

1.3 账号类型定义

序号类型名称图标颜色
1GoogleG蓝色 #4285F4
2Apple🍎黑色 #000000
3Microsoft🪟蓝色 #00A4EF
4Twitter🐦蓝色 #1DA1F2
5Facebookf蓝色 #1877F2
6GitHub猫黑色 #333333
7微信💬绿色 #07C160
8QQ企鹅蓝色 #12B7F5
9邮箱✉️红色 #EA4335
10其他👤灰色 #9E9E9E

1.4 技术栈

技术领域技术选型版本要求
开发框架Flutter>= 3.0.0
编程语言Dart>= 2.17.0
设计规范Material Design 3-
生物认证local_auth>= 2.2.0
数据加密encrypt>= 5.0.0
数据存储shared_preferences>= 2.0.0
目标平台鸿蒙OS / Web / AndroidAPI 21+

1.5 项目结构

lib/
└── main_account_manager.dart
    ├── AccountManagerApp              # 应用入口
    ├── AuthWrapper                    # 身份验证包装器
    ├── AccountType                    # 账号类型枚举
    ├── Account                        # 账号模型
    ├── EncryptionHelper               # 加密帮助类
    ├── AccountStorage                 # 账号存储类
    ├── HomePage                       # 主页面(底部导航)
    ├── _buildAccountsPage             # 账号列表
    ├── _buildCategoriesPage           # 分类页面
    ├── _buildSettingsPage             # 设置页面
    ├── _AddAccountForm                # 添加账号表单
    └── _AccountDetailSheet            # 账号详情

二、系统架构

2.1 整体架构图

Data Layer

Business Layer

Presentation Layer

主页面
HomePage

账号列表

分类浏览

设置中心

账号卡片

搜索筛选

添加账号

类型分类

数量统计

安全设置

数据管理

账号管理器
AccountManager

认证管理器
AuthManager

加密管理器
EncryptionHelper

SharedPreferences

LocalAuthentication

Account模型

2.2 类图设计

has

manages

uses

AccountManagerApp

+Widget build()

AuthWrapper

-LocalAuthentication _localAuth

-bool _isAuthenticated

-bool _isAuthEnabled

+authenticate()

+skipAuth()

«enumeration»

AccountType

+String label

+IconData icon

+Color color

+google()

+apple()

+microsoft()

+twitter()

+facebook()

+github()

+wechat()

+qq()

+email()

+other()

Account

+String id

+String name

+String username

+String email

+String password

+AccountType type

+DateTime createdAt

+DateTime lastUsed

+String notes

+bool isFavorite

+copyWith()

+toMap()

+fromMap()

EncryptionHelper

-Key _key

-IV _iv

-Encrypter _encrypter

+encrypt()

+decrypt()

AccountStorage

+saveAccounts()

+loadAccounts()

2.3 页面导航流程

是

否

验证成功

跳过验证

添加账号

点击账号

搜索

筛选

编辑

删除

收藏

分类

设置

应用启动

生物识别开启?

验证页面

账号列表

用户操作

添加表单

账号详情

搜索框

筛选菜单

填写信息

保存账号

详情操作

编辑表单

确认删除

切换收藏

底部导航

分类页面

设置页面

2.4 数据流程

存储加密器应用用户存储加密器应用用户添加账号收集账号信息加密密码返回密文保存账号数据保存成功显示账号列表查看账号详情加载账号数据返回加密数据解密密码返回明文显示账号详情

三、核心模块设计

3.1 数据模型设计

3.1.1 账号类型枚举 (AccountType)
enum AccountType {
  google(label: 'Google', icon: Icons.g_mobiledata, color: Color(0xFF4285F4)),
  apple(label: 'Apple', icon: Icons.apple, color: Color(0xFF000000)),
  microsoft(label: 'Microsoft', icon: Icons.window, color: Color(0xFF00A4EF)),
  twitter(label: 'Twitter', icon: Icons.alternate_email, color: Color(0xFF1DA1F2)),
  facebook(label: 'Facebook', icon: Icons.facebook, color: Color(0xFF1877F2)),
  github(label: 'GitHub', icon: Icons.code, color: Color(0xFF333333)),
  wechat(label: '微信', icon: Icons.chat, color: Color(0xFF07C160)),
  qq(label: 'QQ', icon: Icons.message, color: Color(0xFF12B7F5)),
  email(label: '邮箱', icon: Icons.email, color: Color(0xFFEA4335)),
  other(label: '其他', icon: Icons.account_circle, color: Color(0xFF9E9E9E));

  final String label;
  final IconData icon;
  final Color color;
}
3.1.2 账号模型 (Account)
class Account {
  final String id;
  final String name;
  final String username;
  final String? email;
  final String? password;
  final AccountType type;
  final DateTime createdAt;
  final DateTime? lastUsed;
  final String? notes;
  final bool isFavorite;

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'name': name,
      'username': username,
      'email': email,
      'password': password,
      'type': type.index,
      'createdAt': createdAt.toIso8601String(),
      // ...
    };
  }

  factory Account.fromMap(Map<String, dynamic> map) {
    return Account(
      id: map['id'] as String,
      name: map['name'] as String,
      // ...
    );
  }
}
3.1.3 账号类型分布示例
29%24%18%18%12%账号类型分布示例Google微信邮箱GitHub其他

3.2 加密模块设计

3.2.1 加密帮助类
class EncryptionHelper {
  static final _key = Key.fromLength(32);
  static final _iv = IV.fromLength(16);
  static final _encrypter = Encrypter(AES(_key));

  static String encrypt(String plainText) {
    return _encrypter.encrypt(plainText, iv: _iv).base64;
  }

  static String decrypt(String encryptedText) {
    return _encrypter.decrypt64(encryptedText, iv: _iv);
  }
}
3.2.2 加密流程

原始密码

加密器

AES加密

Base64编码

存储密文

读取密文

Base64解码

AES解密

原始密码

3.3 生物认证模块设计

3.3.1 认证流程

否

是

否

是

成功

失败

跳过

重试

应用启动

生物识别开启?

直接进入应用

检查设备支持

支持生物识别?

显示跳过选项

发起认证

认证结果

进入应用

显示重试

用户选择

3.3.2 认证实现
Future<void> _authenticate() async {
  final canCheckBiometrics = await _localAuth.canCheckBiometrics;
  if (!canCheckBiometrics) {
    _showAuthResult(false, '设备不支持生物识别');
    return;
  }

  final authenticated = await _localAuth.authenticate(
    localizedReason: '请验证身份以访问账号管理',
    options: const AuthenticationOptions(
      stickyAuth: true,
      biometricOnly: false,
    ),
  );

  if (authenticated) {
    setState(() {
      _isAuthenticated = true;
    });
  }
}

3.4 页面结构设计

3.4.1 主页面布局

HomePage

IndexedStack

账号列表

分类页面

设置页面

NavigationBar

账号 Tab

分类 Tab

设置 Tab

3.4.2 账号列表结构

账号列表

AppBar

搜索筛选

账号卡片列表

添加按钮

搜索框

筛选菜单

账号卡片

类型图标

账号信息

收藏标记


四、UI设计规范

4.1 配色方案

应用以高贵的紫色为主色调,象征安全与信任:

颜色类型色值用途
主色#673AB7 (Purple)导航、主题元素
辅助色#9575CD次要按钮
Google色#4285F4Google账号
Apple色#000000Apple账号
微信色#07C160微信账号
QQ色#12B7F5QQ账号
背景色#FAFAFA页面背景
卡片背景#FFFFFF信息卡片

4.2 账号类型配色

类型色值图标
Google#4285F4G
Apple#000000🍎
Microsoft#00A4EF🪟
Twitter#1DA1F2🐦
Facebook#1877F2f
GitHub#333333猫
微信#07C160💬
QQ#12B7F5企鹅
邮箱#EA4335✉️
其他#9E9E9E👤

4.3 字体规范

元素字号字重颜色
页面标题24pxBold主色
账号名称16pxBold#000000
用户名14pxRegular#666666
邮箱12pxRegular#888888
提示文字14pxRegular#999999

4.4 组件规范

4.4.1 账号卡片
┌─────────────────────────────────────┐
│  ┌──────┐                           │
│  │  G   │  Google账号        ★     │
│  │      │  username@gmail.com      │
│  └──────┘                           │
└─────────────────────────────────────┘
4.4.2 添加账号表单
┌─────────────────────────────────────┐
│  添加账号                            │
│                                     │
│  账号名称 *                          │
│  ┌─────────────────────────────┐   │
│  │                             │   │
│  └─────────────────────────────┘   │
│                                     │
│  用户名                              │
│  ┌─────────────────────────────┐   │
│  │                             │   │
│  └─────────────────────────────┘   │
│                                     │
│  邮箱                                │
│  ┌─────────────────────────────┐   │
│  │                             │   │
│  └─────────────────────────────┘   │
│                                     │
│  密码                           👁️  │
│  ┌─────────────────────────────┐   │
│  │ ••••••••                    │   │
│  └─────────────────────────────┘   │
│                                     │
│  账号类型                            │
│  [G Google] [🍎 Apple] [🪟 Microsoft]│
│                                     │
│  [        保 存        ]            │
└─────────────────────────────────────┘
4.4.3 账号详情
┌─────────────────────────────────────┐
│  ┌──────┐                      ★    │
│  │  G   │  Google账号              │
│  │      │  Google                  │
│  └──────┘                           │
│                                     │
│  👤 用户名: username                 │
│  ✉️ 邮箱: username@gmail.com        │
│  🔒 密码: ••••••••      👁️  📋     │
│  📝 备注: 工作账号                   │
│  🕐 创建时间: 2024-01-15             │
│                                     │
│  [🗑️ 删除]        [✏️ 编辑]        │
└─────────────────────────────────────┘

五、核心功能实现

5.1 生物认证实现

Future<void> _authenticate() async {
  if (_isAuthenticating) return;

  setState(() {
    _isAuthenticating = true;
  });

  try {
    final canCheckBiometrics = await _localAuth.canCheckBiometrics;
    if (!canCheckBiometrics) {
      _showAuthResult(false, '设备不支持生物识别');
      return;
    }

    final authenticated = await _localAuth.authenticate(
      localizedReason: '请验证身份以访问账号管理',
      options: const AuthenticationOptions(
        stickyAuth: true,
        biometricOnly: false,
      ),
    );

    if (authenticated) {
      setState(() {
        _isAuthenticated = true;
      });
    }
  } catch (e) {
    _showAuthResult(false, '验证出错: $e');
  } finally {
    setState(() {
      _isAuthenticating = false;
    });
  }
}

5.2 数据加密实现

class EncryptionHelper {
  static final _key = Key.fromLength(32);
  static final _iv = IV.fromLength(16);
  static final _encrypter = Encrypter(AES(_key));

  static String encrypt(String plainText) {
    return _encrypter.encrypt(plainText, iv: _iv).base64;
  }

  static String decrypt(String encryptedText) {
    return _encrypter.decrypt64(encryptedText, iv: _iv);
  }
}

5.3 账号存储实现

class AccountStorage {
  static const String _accountsKey = 'accounts';

  static Future<void> saveAccounts(List<Account> accounts) async {
    final prefs = await SharedPreferences.getInstance();
    final encryptedData = accounts.map((a) {
      final map = a.toMap();
      if (map['password'] != null) {
        map['password'] = EncryptionHelper.encrypt(map['password'] as String);
      }
      return map;
    }).toList();
    
    // 保存到SharedPreferences
    await prefs.setString(_accountsKey, jsonString);
  }

  static Future<List<Account>> loadAccounts() async {
    final prefs = await SharedPreferences.getInstance();
    final jsonString = prefs.getString(_accountsKey);
    if (jsonString == null) return [];

    // 解密并返回账号列表
    return decoded.map((map) {
      if (map['password'] != null) {
        map['password'] = EncryptionHelper.decrypt(map['password'] as String);
      }
      return Account.fromMap(Map<String, dynamic>.from(map));
    }).toList();
  }
}

5.4 收藏功能实现

void _toggleFavorite(String id) {
  final index = _accounts.indexWhere((a) => a.id == id);
  if (index != -1) {
    final account = _accounts[index];
    _accounts[index] = account.copyWith(isFavorite: !account.isFavorite);
    _applyFilter();
    _saveAccounts();
  }
}

六、交互设计

6.1 添加账号流程

存储表单列表页用户存储表单列表页用户点击添加按钮打开添加表单显示表单界面输入账号名称输入用户名输入密码选择类型点击保存验证输入加密并保存保存成功关闭表单显示更新后的列表

6.2 生物认证流程

否

是

验证身份

跳过验证

成功

失败

应用启动

生物识别开启?

直接进入应用

显示验证页面

用户操作

调用生物识别

验证结果

显示错误

6.3 账号筛选流程

选择类型

切换收藏

清除筛选

切换收藏

取消收藏筛选

选择类型

全部账号

按类型筛选

只显示收藏


七、扩展功能规划

7.1 后续版本规划

2024-01-072024-01-142024-01-212024-01-282024-02-042024-02-112024-02-182024-02-252024-03-032024-03-10基础UI框架 账号管理 数据加密 生物认证 分类管理 收藏功能 云端同步 密码生成 自动填充 V1.0 基础版本V1.1 增强版本V1.2 进阶版本多账号管理开发计划

7.2 功能扩展建议

7.2.1 高级安全功能

安全功能:

  • 双重认证支持
  • 自动锁定机制
  • 安全审计日志
  • 密码强度检测
7.2.2 便捷功能

便捷功能:

  • 密码自动生成
  • 一键复制账号密码
  • 快速登录集成
  • 账号导入导出
7.2.3 云端功能

云端功能:

  • 多设备同步
  • 云端备份
  • 团队账号共享
  • 版本历史记录

八、注意事项

8.1 开发注意事项

  1. 数据安全:密码必须加密存储

  2. 权限处理:正确申请生物识别权限

  3. 错误处理:处理认证失败和数据损坏

  4. 性能优化:大量账号时使用分页加载

  5. 隐私保护:敏感信息不可明文显示

8.2 常见问题

问题原因解决方案
生物识别失败设备不支持提供跳过选项
数据解密失败密钥不匹配检查加密配置
账号丢失数据未保存确保正确保存
认证超时用户无响应设置合理超时
密码显示错误解密失败检查加密算法

8.3 使用技巧

🔐 多账号管理使用技巧 🔐

账号管理技巧

  • 为账号设置有意义的名称
  • 选择正确的账号类型
  • 及时更新账号信息
  • 定期清理无用账号

安全设置技巧

  • 开启生物识别保护
  • 使用强密码
  • 定期更换密码
  • 启用自动锁定

效率提升技巧

  • 收藏常用账号
  • 使用搜索快速定位
  • 按类型分类管理
  • 定期备份数据

九、运行说明

9.1 环境要求

环境版本要求
Flutter SDK>= 3.0.0
Dart SDK>= 2.17.0
鸿蒙OSAPI 21+
AndroidAPI 21+
Web浏览器Chrome 90+

9.2 依赖配置

在 pubspec.yaml 中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.5.3
  local_auth: ^2.3.0
  encrypt: ^5.0.3

9.3 运行命令

# 查看可用设备
flutter devices

# 运行到Web服务器
flutter run -d web-server -t lib/main_account_manager.dart --web-port 8203

# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_account_manager.dart

# 代码分析
flutter analyze lib/main_account_manager.dart

十、总结

多账号管理应用是一款安全便捷的账号管理工具,支持管理多个账号、账号切换、账号信息展示,以及安全设置。应用采用 Material Design 3 设计规范,以高贵的紫色为主色调,象征安全与信任。

核心功能涵盖账号管理、账号切换、信息展示、安全设置、数据加密、分类管理、收藏功能、搜索功能八大模块。用户可以安全存储各类账号信息、快速切换账号、保护隐私安全,让账号管理更加轻松便捷。

应用支持10种账号类型(Google、Apple、Microsoft、Twitter、Facebook、GitHub、微信、QQ、邮箱、其他),使用AES加密保护密码安全,支持生物识别验证。通过本应用,希望能够帮助用户安全高效地管理各类账号信息。

多账号管理——安全便捷,尽在掌握


Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐