feat: 进行功能分区方便后期维护

- 添加导航条目和分类数据模型
- 实现导航卡片网格展示
- 支持点击卡片打开链接
- 添加主题样式(渐变色、卡片阴影)
- 区分系统默认和自定义条目
- 添加分类统计信息"
This commit is contained in:
2026-09-13 22:49:02 +08:00
parent 4075519075
commit e2cc3ac30f
40 changed files with 3379 additions and 515 deletions
@@ -0,0 +1,8 @@
/// 打开外部链接的能力抽象。
///
/// 界面层只依赖这个接口:一来把「打开链接」这种平台相关行为挡在 UI 之外,
/// 二来测试里可以注入假实现,避免真的弹出浏览器。
abstract interface class UrlOpener {
/// 打开 [url]。
void open(String url);
}
@@ -0,0 +1,16 @@
import 'package:web/web.dart' as web;
import 'url_opener.dart';
/// [UrlOpener] 的 Web 实现:在新标签页打开链接。
///
/// 当前项目只面向 Web,因此这是唯一的实现;
/// 以后要支持其它平台,只需新增实现类,界面代码无需改动。
class WebUrlOpener implements UrlOpener {
const WebUrlOpener();
@override
void open(String url) {
web.window.open(url, '_blank');
}
}