feat: 新增工作台模式、系统托盘,修复多平台兼容性问题

1. 新增工作台三栏布局模式,适配宽屏设备
2. 添加跨平台系统托盘支持,新增托盘图标资源
3. 修复工作台模式下导航返回异常问题
4. 统一JSON类型安全解析,替换硬类型转换
5. 增加macOS深度链接支持,统一渠道分发信息
6. 优化部分页面生命周期和状态加载逻辑
7. 移除废弃的nearby_connections依赖
This commit is contained in:
Developer
2026-06-19 06:43:55 +08:00
parent 6a02a313b2
commit 83720002e6
194 changed files with 11716 additions and 3120 deletions

View File

@@ -41,6 +41,7 @@ import 'features/settings/services/settings_change_logger.dart';
import 'features/auth/providers/auth_provider.dart';
import 'features/discover/services/rss_service.dart';
import 'features/discover/services/exchange_rate_service.dart';
import 'package:path_provider/path_provider.dart';
bool kvStorageReady = false;
bool _liquidGlassReady = false;
@@ -68,6 +69,10 @@ Future<void> _appMain() async {
minimumSize: Size(400, 600),
title: '闲言',
center: true,
// 隐藏系统标题栏使用自定义软件样式标题栏DesktopWindowTitleBar
titleBarStyle: TitleBarStyle.hidden,
// macOS: 隐藏原生红黄绿按钮,由 Flutter 侧自绘
skipTaskbar: false,
);
await windowManager.waitUntilReadyToShow(windowOptions, () async {
await windowManager.show();
@@ -287,8 +292,18 @@ Future<void> _appMain() async {
// 初始化 Catcher2 异常捕获并启动应用
// 使用 rootWidget 方式Catcher2 内部调用 runApp避免 Zone mismatch
// 预先获取临时目录作为截图保存路径,避免 Catcher2 输出 "Screenshots path is empty" 警告
String catcherScreenshotsPath = '';
try {
final tempDir = await getTemporaryDirectory();
catcherScreenshotsPath = '${tempDir.path}/catcher_screenshots';
} catch (e) {
// 获取失败时保持空字符串Catcher2 会输出警告但不影响功能
}
if (_liquidGlassReady) {
Catcher2ConfigService.instance.init(
screenshotsPath: catcherScreenshotsPath,
rootWidget: LiquidGlassWidgets.wrap(
child: ProviderScope(
overrides: [
@@ -304,6 +319,7 @@ Future<void> _appMain() async {
);
} else {
Catcher2ConfigService.instance.init(
screenshotsPath: catcherScreenshotsPath,
rootWidget: ProviderScope(
overrides: [
authStateProvider.overrideWith((ref) => ref.watch(authProvider)),