本次实验的重点是扩展开源鸿蒙跨平台应用核心功能,通过新增底部选项卡及完善对应页面实现,丰富应用交互维度与服务能力,并完成开源鸿蒙设备运行验证。

一、数据模型

1.1. lib/data/models/models.dart

主要定义了一系列用于处理 AtomGit(码云)相关数据的模型类,涵盖仓库信息、用户活动、通知、问题 / PR、用户资料等多个维度的数据结构。

核心作用是:将 AtomGit API 返回的 JSON 数据映射为强类型的 Dart 模型类,并提供了便捷的序列化 / 反序列化方法(fromApi/fromJson 工厂构造函数),同时包含了一些辅助方法和枚举类型来规范数据格式。

分类 类名 核心功能 关键字段
仓库相关 RepositoryInfo 仓库基本信息(整体概览),用于展示仓库核心属性 id、name(仓库名)、owner(所有者)、description(描述)、language(开发语言)、stars(星数)、forks(分支数)、updatedAt(更新时间)、defaultBranch(默认分支)、topics(主题标签)、readmePreview(README 预览)
仓库相关 RepositoryContentItem 仓库文件 / 目录详情,用于获取单个文件或文件夹的具体信息(如读取文件内容、查看文件大小) name(文件 / 目录名)、path(路径)、type(类型:file/dir)、size(大小)、encoding(编码方式)、content(文件内容)、sha(唯一标识)、url(访问链接)
仓库相关 GitTreeItem 仓库文件树节点信息,用于遍历仓库目录结构,构建目录树展示 id(节点 ID)、name(节点名)、type(类型:blob/tree)、path(路径)、mode(权限模式)
分支相关 BranchInfo 仓库分支信息,用于展示分支名称及对应最新提交 name(分支名)、commitSha(最新提交 SHA 值)
提交相关 CommitInfo 单次代码提交的详细信息,用于展示提交历史、提交人及提交说明 id(提交完整 ID)、shortId(提交短 ID)、title(提交标题)、authorName(作者名)、authorEmail(作者邮箱)、createdAt(提交时间)、message(提交完整信息)
提交相关 CommitStatistics 提交代码统计信息,配套 CommitInfo 使用,展示提交的代码增删改情况 additions(新增行数)、deletions(删除行数)、total(总变更行数)
活动 / 通知相关 ActivityItem 用户在仓库中的操作活动记录,用于展示用户近期操作(如推送代码、创建项目) author(操作人)、avatar(操作人头像 URL)、description(操作描述)、timeAgo(相对时间,如 “3 小时前”)
活动 / 通知相关 NotificationItem 用户收到的系统通知,用于展示通知内容、分类及未读状态 id(通知 ID)、title(通知标题)、subtitle(通知副标题)、category(通知分类)、unread(未读状态)、icon(通知图标)
问题 / PR 相关 IssueItem 问题(Issue)或合并请求(PR)的核心信息,用于展示问题 / PR 的状态、标签及关联信息 id(问题 / PR 编号)、title(标题)、repository(所属仓库)、author(创建人)、authorAvatarUrl(创建人头像)、labels(标签列表)、updatedAt(更新时间)、status(状态)、type(类型:issue/pullRequest)、assignee(负责人)
用户 / 组织相关 AtomGitUserProfile 用户个人资料信息,用于展示用户基本信息、社交关系及账号状态 id(用户 ID)、username(用户名)、displayName(显示名)、avatarUrl(头像 URL)、webUrl(个人主页链接)、email(邮箱)、location(所在地)、bio(个人简介)、followers(粉丝数)、following(关注数)、createdAt(账号创建时间)、lastSignInAt(最后登录时间)
用户 / 组织相关 Organization 组织(机构)信息,用于展示组织基本属性及访问链接 id(组织 ID)、name(组织名)、path(组织路径)、description(组织描述)、avatarUrl(组织头像)、webUrl(组织主页链接)
授权相关 AtomGitOAuthToken OAuth2.0 授权令牌信息,用于 API 身份验证,管理令牌生命周期 accessToken(访问令牌)、refreshToken(刷新令牌)、expiresIn(过期时间,秒)、scopes(权限范围列表)、issuedAt(签发时间)、tokenType(令牌类型,默认 Bearer)、expiresAt(过期时间,DateTime)、isExpired(是否过期,布尔值)
UI 辅助类 QuickAction 快捷操作项,纯 UI 展示用,用于构建首页等页面的快捷操作入口(无 API 反序列化) title(操作标题)、subtitle(操作副标题)、icon(操作图标)、gradient(背景渐变)
UI 辅助类 ContributionStat 贡献统计项,纯 UI 展示用,用于展示用户贡献数据(如提交数、合并 PR 数)(无 API 反序列化) title(统计标题)、value(统计数值)、trend(趋势描述,如 “+10%”)、gradient(背景渐变)

二、核心模块

2.1. lib/core/auth/atomgit_auth_state.dart

Flutter 中用于管理 AtomGit 授权状态的核心逻辑,基于 ValueNotifier 实现了授权流程的状态管理,包含授权中、授权成功、授权失败、清除状态等完整的状态流转逻辑。

封装 AtomGit 授权(OAuth)的全流程状态,通过单例模式提供全局的授权状态管理,支持状态监听(基于 ValueNotifier 的特性),让 UI 层能实时响应授权状态变化(如显示加载中、展示错误提示、更新登录状态)。

2.2. lib/core/constants/app_colors.dart

Flutter 中用于统一管理 App 配色的常量类 AppColors,通过定义静态常量颜色值,实现了全应用配色的集中管理,符合 Flutter 开发中 “样式统一、易于维护” 的最佳实践。

封装 App 中所有固定使用的颜色值,通过静态常量的形式提供全局统一的颜色引用,避免在代码中硬编码十六进制颜色值,同时通过私有构造函数防止类被实例化,保证使用的规范性。

2.3. lib/core/constants/app_gradients.dart

Flutter 项目中 AppGradients 渐变管理类的完整说明,汇总了所有预定义的线性渐变常量、配色组成及使用场景,实现全应用渐变样式的统一管理。

2.4. lib/core/network/atomgit_remote_interceptor.dart

Flutter 中 Dio 库实现的自定义日志拦截器 AtomGitLoggingInterceptor,主要用于在控制台打印 AtomGit 相关网络请求的详细日志,方便调试。

核心功能是通过 Dio 的 Interceptor(拦截器)机制,在网络请求的发起前、响应后、出错时三个阶段打印关键日志信息,帮助开发者调试网络请求问题。

2.5. lib/core/network/atomgit_api.dart

基于 Dio 库封装了 AtomGit 接口的请求配置、Token 管理、通用请求头设置和基础的 GET/POST 方法,同时集成了日志拦截器。

2.6. lib/core/network/atomgit_oauth_client.dart

AtomGit 平台 OAuth 2.0 认证流程的完整封装,包含配置管理(AtomGitOAuthConfig)和核心认证逻辑(AtomGitOAuthClient),实现了授权链接构建、授权码兑换 Token、刷新 Token 三大核心功能。

2.7. lib/core/network/atomgit_service_factory.dart

用于创建和配置 AtomGit 远程服务的客户端,核心功能是管理 Gitcode API 调用所需的 Token,并提供单例的 API 客户端实例。

2.8. lib/core/oauth/harmony_oauth_bridge.dart

Flutter 端的鸿蒙(HarmonyOS)OAuth 回调桥接类(HarmonyOAuthBridge),核心功能是通过 Flutter 的 MethodChannel/EventChannel 与原生鸿蒙代码通信,实现 OAuth 授权页面的拉起、授权回调链接的监听(包括冷启动时的初始链接),并将回调链接以 Uri 流的形式对外暴露。

2.9. lib/core/oauth/universal_oauth_bridge.dart

跨平台的 OAuth 回调桥接类(UniversalOAuthBridge),核心基于 uni_links 和 url_launcher 两个 Flutter 主流库,实现了多平台通用的 OAuth 授权流程:拉起外部浏览器打开授权页面、监听授权完成后的回调链接(包括冷启动初始链接),并将回调链接以 Uri 流的形式对外暴露。

2.10. lib/core/storage/personal_token_store.dart

跨平台的 AtomGit 个人令牌(Personal Token)本地存储管理类(PersonalTokenStore),核心功能是将 Token 持久化存储到本地文件系统(优先用户主目录,兜底系统临时目录),并通过 ValueNotifier 实现 Token 状态的响应式监听,同时联动 GitCode API 客户端更新 Token。

2.11. lib/core/theme/app_theme.dart

Flutter 应用的浅色主题配置类(AppTheme),核心基于 Material 3 设计规范,通过自定义 ColorScheme、字体(Google Fonts)和各类组件主题(AppBar、Card、Input 等),统一了应用的视觉风格。

三、数据服务

3.1. lib/data/mock/mock_data.dart

Flutter 应用的模拟数据类(MockData),核心作用是为 UI 开发、功能测试提供结构化的假数据,涵盖了快速操作、热门仓库、用户活动、通知、贡献统计、工作台任务、语言筛选、标签等多类业务数据,数据结构与业务模型(如 QuickAction、RepositoryInfo 等)完全匹配。

3.2. lib/data/services/atomgit_oauth_service.dart

AtomGit 应用的核心 OAuth 认证服务类(AtomGitOAuthService),整合了之前的 OAuth 配置、客户端、跨平台桥接(鸿蒙 / 通用)、认证状态管理等模块,完整实现了 AtomGit 平台的 OAuth 授权登录、Token 刷新、登出等核心流程,还包含了 State 校验、回调链接校验、异常处理等安全和健壮性设计。
在这里插入图片描述

3.3. lib/data/services/atomgit_remote_service.dart

AtomGit 应用的核心远程服务类(AtomGitRemoteService),基于封装好的 AtomGitApiClient 实现了几乎全量的 AtomGit API 调用能力,涵盖仓库、Issue、通知、用户、提交记录、代码树等核心业务场景,是连接前端 UI 和后端 API 的关键层。

四、复用组件

4.1. lib/widgets/avatar_image.dart

通用的 Flutter 头像组件(AvatarImage),核心功能是加载网络头像图片,同时提供完善的降级方案:图片加载失败 / 无图片链接时,显示基于文本(用户名 / 昵称)生成的首字母占位头像,还支持自定义尺寸、适配主题样式,是一个高复用、鲁棒性强的 UI 组件。

4.2. lib/widgets/error_banner.dart

通用的 Flutter 错误提示横幅组件(ErrorBanner),核心功能是展示错误信息,还支持自定义图标、重试按钮及文案,样式上采用柔和的橙色警告系配色、圆角边框设计,兼顾了视觉友好性和功能实用性,是一个高复用的 UI 组件。

4.3. lib/widgets/glass_card.dart

实现了 “毛玻璃(Glassmorphism)” 效果的 Flutter 卡片组件(GlassCard),核心通过渐变、半透明白色边框、柔和阴影组合出质感十足的玻璃拟态风格,支持自定义内边距和子组件,是一个视觉效果优秀、高复用的 UI 基础组件。

4.4. lib/widgets/repository_card.dart

AtomGit 应用的核心仓库卡片组件(RepositoryCard),完整展示了仓库的所有核心信息(所有者、名称、描述、标签、星数 / 分叉数 / 观察者数、更新时间、进度条等),视觉层次清晰、交互友好,是一个高度封装、可复用的业务组件。

4.5. lib/widgets/section_header.dart

通用的 Flutter 分区标题组件(SectionHeader),核心作用是为列表 / 卡片区域提供标准化的标题 + 副标题 + 右侧操作按钮组合,适配各类页面分区的标题展示需求。

4.6. lib/widgets/section_loading_indicator.dart

通用的 Flutter 分区加载指示器组件(SectionLoadingIndicator),核心作用是为页面中的各个分区(如仓库列表、活动列表)提供标准化的加载状态展示,支持自定义高度,适配不同分区的布局需求。

五、功能模块

5.1. lib/features/home/home_page.dart

AtomGit Pocket 应用的核心首页(HomePage),整合了用户信息、热门仓库、活动动态、通知消息、贡献统计、协作工具等全量核心功能,采用了现代化的 UI 设计(毛玻璃卡片、渐变、滚动优化),并处理了加载 / 错误 / 空数据等边界状态,是一个完整且高质量的 Flutter 首页实现。

5.1.1. 功能验证

在这里插入图片描述

5.2. lib/features/repositories/repository_detail_page.dart

AtomGit Pocket 应用的仓库详情页(RepositoryDetailPage),是整个应用的核心功能页面之一。它完整实现了仓库信息展示、多维度数据加载(语言占比、动态、分支、星标用户)、文件浏览器、文件预览等核心能力,还处理了加载 / 错误 / 空数据等边界状态,是一个功能完备、交互流畅的详情页实现。

5.2.1. 功能验证

在这里插入图片描述

5.3. lib/features/repositories/repositories_page.dart

AtomGit Pocket 应用的仓库列表页(RepositoriesPage),是管理和浏览个人仓库的核心页面。它整合了仓库分类切换(我的仓库 / 收藏 / 最近更新)、语言筛选、离线缓存开关、加载 / 错误状态处理等核心功能,还支持下拉刷新和仓库卡片点击跳转详情页,是一个功能完整、交互友好的列表页实现。

5.3.1. 功能验证

在这里插入图片描述

5.4. lib/features/search/search_page.dart

AtomGit Pocket 应用的全站搜索页(SearchPage),核心实现了多维度搜索(仓库 / 用户 / Issue/PR)、搜索态管理、空数据 / 加载 / 错误状态处理,还默认展示热门仓库作为未搜索时的兜底内容,是一个功能完整、交互流畅的搜索页面。

5.4.1. 功能验证

在这里插入图片描述

5.5. lib/features/settings/settings_page.dart

AtomGit Pocket 应用的设置页(SettingsPage),是应用的核心配置页面,整合了用户资料展示、授权码配置、功能开关(主题 / 通知 / 离线缓存 / 双重验证)、第三方集成、问题反馈等全量设置功能,还处理了未授权、加载失败、加载中、空数据等边界状态,是一个功能完整、交互友好的设置页面实现。

5.5.1. 功能验证

在这里插入图片描述

5.6. lib/features/workbench/workbench_page.dart

AtomGit Pocket 应用的Issue/PR 工作台页面(WorkbenchPage),核心实现了 Issue/PR 的类型筛选、状态筛选、列表展示和基础操作按钮,采用了现代化的 UI 设计(毛玻璃卡片、圆角筛选器、状态标签),是一个功能完整、交互友好的工作台页面。

5.6.1. 功能验证

在这里插入图片描述

5.7. lib/features/shell/atomgit_shell.dart

AtomGit Pocket 应用的核心壳页面(GitcodeShell),作为整个应用的导航中枢,整合了底部导航栏、页面切换动画、全局背景样式等核心能力,是连接首页、仓库页、搜索页、工作台、设置页的关键页面。

5.7.1 功能验证

在这里插入图片描述

6.1. lib/main.dart

AtomGit Pocket 应用的入口文件,核心作用是初始化 Flutter 应用、配置基础主题和根页面,是整个应用的启动入口。

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

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐