chore: 完成v6.7.0版本迭代更新
本次更新涵盖多个功能模块的优化与新增: 1. 新增Wi-Fi直连配对方式与协作画布模块 2. 完成设备管理重命名API与前端适配 3. 优化日签卡片空数据保护与UI细节 4. 新增剪贴板工具与每日运势会话 5. 修复应用锁恢复、语音消息录制等已知问题 6. 完善文件传输统计与配对逻辑 7. 更新安卓权限配置与iOS隐私描述 8. 新增自动化测试脚本与文档 9. 清理旧版审计报告与测试文件
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
// ============================================================
|
||||
// 闲言APP — 应用布局壳
|
||||
// 创建时间: 2026-04-20
|
||||
// 更新时间: 2026-04-30
|
||||
// 作用: ShellRoute 布局壳,包含底部 GlassBottomBar 导航 + 灵感小红点
|
||||
// 上次更新: 灵感Tab接入badges小红点,显示未读推送数
|
||||
// 更新时间: 2026-05-14
|
||||
// 作用: ShellRoute 布局壳,包含底部 GlassBottomBar 导航 + 发现小红点
|
||||
// 上次更新: 集成TabIconSprite精灵动画图标,替换静态CupertinoIcons
|
||||
// ============================================================
|
||||
|
||||
import 'package:badges/badges.dart' as badges;
|
||||
@@ -16,8 +16,9 @@ import 'package:liquid_glass_widgets/liquid_glass_widgets.dart';
|
||||
|
||||
import '../theme/app_theme.dart';
|
||||
import '../utils/interaction_animations.dart';
|
||||
import '../../features/inspiration/presentation/widgets/tool_panel.dart';
|
||||
import '../../features/inspiration/providers/chat_provider.dart';
|
||||
import '../../features/settings/providers/theme_settings_provider.dart';
|
||||
import '../../shared/widgets/tab_icon_sprite.dart';
|
||||
|
||||
class AppShell extends ConsumerWidget {
|
||||
const AppShell({super.key, required this.child});
|
||||
@@ -29,6 +30,30 @@ class AppShell extends ConsumerWidget {
|
||||
final ext = AppTheme.ext(context);
|
||||
final int currentIndex = child.currentIndex;
|
||||
final unreadCount = ref.watch(chatProvider).unreadCount;
|
||||
final settings = ref.watch(themeSettingsProvider);
|
||||
final expressionStyle = settings.tabExpressionStyle;
|
||||
final characterId = settings.tabCharacterStyleId;
|
||||
final animIntensity = settings.animationIntensity.durationMultiplier;
|
||||
|
||||
int adjacentFor(int index) {
|
||||
if (index == currentIndex) return 0;
|
||||
if (index < currentIndex) return -1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
Widget buildSpriteIcon(TabSpriteType type, int index, String label) {
|
||||
return TabIconSprite(
|
||||
type: type,
|
||||
label: label,
|
||||
isSelected: index == currentIndex,
|
||||
adjacentDirection: adjacentFor(index),
|
||||
animationIntensity: animIntensity,
|
||||
characterId: characterId,
|
||||
eyeScale: expressionStyle.eyeScale,
|
||||
mouthCurve: expressionStyle.mouthCurve,
|
||||
bounceMultiplier: expressionStyle.bounceMultiplier,
|
||||
);
|
||||
}
|
||||
|
||||
return CelebrationOverlay(
|
||||
child: AnnotatedRegion<SystemUiOverlayStyle>(
|
||||
@@ -47,17 +72,15 @@ class AppShell extends ConsumerWidget {
|
||||
},
|
||||
child: Scaffold(
|
||||
extendBody: true,
|
||||
body: Stack(children: [child, const ToolPanel()]),
|
||||
body: Stack(children: [child]),
|
||||
bottomNavigationBar: GlassBottomBar(
|
||||
tabs: [
|
||||
const GlassBottomBarTab(
|
||||
label: '首页',
|
||||
icon: Icon(CupertinoIcons.house),
|
||||
activeIcon: Icon(CupertinoIcons.house_fill),
|
||||
glowColor: Color(0xFFE8E8ED),
|
||||
GlassBottomBarTab(
|
||||
icon: buildSpriteIcon(TabSpriteType.home, 0, '闲言'),
|
||||
activeIcon: buildSpriteIcon(TabSpriteType.home, 0, '闲言'),
|
||||
glowColor: const Color(0xFFE8E8ED),
|
||||
),
|
||||
GlassBottomBarTab(
|
||||
label: '灵感',
|
||||
icon: badges.Badge(
|
||||
showBadge: unreadCount > 0,
|
||||
badgeContent: Text(
|
||||
@@ -73,7 +96,7 @@ class AppShell extends ConsumerWidget {
|
||||
padding: EdgeInsets.all(3),
|
||||
),
|
||||
position: badges.BadgePosition.topEnd(top: -4, end: -6),
|
||||
child: const Icon(CupertinoIcons.sparkles),
|
||||
child: buildSpriteIcon(TabSpriteType.discover, 1, '发现'),
|
||||
),
|
||||
activeIcon: badges.Badge(
|
||||
showBadge: unreadCount > 0,
|
||||
@@ -90,15 +113,14 @@ class AppShell extends ConsumerWidget {
|
||||
padding: EdgeInsets.all(3),
|
||||
),
|
||||
position: badges.BadgePosition.topEnd(top: -4, end: -6),
|
||||
child: const Icon(CupertinoIcons.sparkles),
|
||||
child: buildSpriteIcon(TabSpriteType.discover, 1, '发现'),
|
||||
),
|
||||
glowColor: const Color(0xFFE8E8ED),
|
||||
),
|
||||
const GlassBottomBarTab(
|
||||
label: '我的',
|
||||
icon: Icon(CupertinoIcons.person),
|
||||
activeIcon: Icon(CupertinoIcons.person_fill),
|
||||
glowColor: Color(0xFFE8E8ED),
|
||||
GlassBottomBarTab(
|
||||
icon: buildSpriteIcon(TabSpriteType.profile, 2, '我的'),
|
||||
activeIcon: buildSpriteIcon(TabSpriteType.profile, 2, '我的'),
|
||||
glowColor: const Color(0xFFE8E8ED),
|
||||
),
|
||||
],
|
||||
selectedIndex: currentIndex,
|
||||
@@ -112,10 +134,9 @@ class AppShell extends ConsumerWidget {
|
||||
barBorderRadius: 34,
|
||||
horizontalPadding: 16,
|
||||
verticalPadding: 16,
|
||||
indicatorColor:
|
||||
ext.isDark
|
||||
? Colors.white.withValues(alpha: 0.08)
|
||||
: Colors.black.withValues(alpha: 0.04),
|
||||
indicatorColor: ext.isDark
|
||||
? Colors.white.withValues(alpha: 0.08)
|
||||
: Colors.black.withValues(alpha: 0.04),
|
||||
indicatorSettings: LiquidGlassSettings(
|
||||
thickness: 40,
|
||||
blur: 25,
|
||||
@@ -123,10 +144,9 @@ class AppShell extends ConsumerWidget {
|
||||
chromaticAberration: 1.2,
|
||||
lightIntensity: 3.5,
|
||||
ambientStrength: 1.2,
|
||||
glassColor:
|
||||
ext.isDark
|
||||
? const Color.from(alpha: 0.18, red: 1, green: 1, blue: 1)
|
||||
: const Color.from(alpha: 0.12, red: 1, green: 1, blue: 1),
|
||||
glassColor: ext.isDark
|
||||
? const Color.from(alpha: 0.18, red: 1, green: 1, blue: 1)
|
||||
: const Color.from(alpha: 0.12, red: 1, green: 1, blue: 1),
|
||||
),
|
||||
glassSettings: LiquidGlassSettings(
|
||||
thickness: 30,
|
||||
@@ -136,10 +156,9 @@ class AppShell extends ConsumerWidget {
|
||||
lightIntensity: 1.2,
|
||||
saturation: 1.0,
|
||||
ambientStrength: 0.6,
|
||||
glassColor:
|
||||
ext.isDark
|
||||
? const Color.from(alpha: 0.08, red: 1, green: 1, blue: 1)
|
||||
: const Color.from(alpha: 0.05, red: 1, green: 1, blue: 1),
|
||||
glassColor: ext.isDark
|
||||
? const Color.from(alpha: 0.08, red: 1, green: 1, blue: 1)
|
||||
: const Color.from(alpha: 0.05, red: 1, green: 1, blue: 1),
|
||||
),
|
||||
magnification: 1.12,
|
||||
innerBlur: 1.5,
|
||||
|
||||
Reference in New Issue
Block a user