feat(ui06): App line A0-A7 — nav pill removal, light segments, bare summary, token alignment to app-preview
- tokens:次文字 #69778E、soft/card-border/seg 色组、输入圆角 10(kRadiusField) - theme:导航 indicatorColor 透明+显式选中蓝;卡片去阴影改 1px #EDF0F5 边框;输入边框同步 - 新组件 SegmentTabs(#EDF1F6 轨道/选中实蓝/light 浅蓝变体/null 无高亮)替换 M3 SegmentedButton - 上传中心:摘要去白卡直排+主数字 32/40;completed 次级筛选无高亮语义保留 - 相册卡 scrim 30% 起 #0C1728E8;导航角标红底白字白边;登录主标题 27/700 - theme_test 三处旧规格断言随 UI06 值更新;397/397 全绿、analyze 0 issues - 真机证据:MuMu + 测试服务器 API,登录/相册/详情/上传 4 页截图确认达标 - 登记偏差:语义色保持对比度合规深色版;视口矩阵随 G2;详见验收记录 §6 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -31,7 +31,7 @@ abstract final class AppTheme {
|
||||
static const Color _surface = Color(0xFFFFFFFF);
|
||||
static const Color _onSurface = Color(0xFF172033);
|
||||
static const Color _background = Color(0xFFF6F8FB);
|
||||
static const Color _textSecondary = Color(0xFF5E6878);
|
||||
static const Color _textSecondary = Color(0xFF69778E); // UI06: app-preview --muted
|
||||
static const Color _divider = Color(0xFFE5EAF1);
|
||||
static const Color _waiting = Color(0xFF996300);
|
||||
static const Color _onWaiting = Color(0xFFFFFFFF);
|
||||
@@ -141,14 +141,15 @@ abstract final class AppTheme {
|
||||
),
|
||||
),
|
||||
|
||||
// 卡片:白色表面(深色深表面)、圆角 16、轻阴影。
|
||||
// 卡片:白色表面、圆角 16、细边框无阴影(app-preview .card 形态)。
|
||||
cardTheme: CardThemeData(
|
||||
color: colorScheme.surface,
|
||||
surfaceTintColor: Colors.transparent,
|
||||
elevation: 1,
|
||||
shadowColor: Colors.black.withValues(alpha: dark ? 0.4 : 0.08),
|
||||
elevation: 0,
|
||||
shadowColor: Colors.transparent,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(kRadiusCard),
|
||||
side: BorderSide(color: dark ? _dividerDark : kColorCardBorder),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -179,15 +180,26 @@ abstract final class AppTheme {
|
||||
actionTextColor: colorScheme.inversePrimary,
|
||||
),
|
||||
|
||||
// 底部导航:白色表面(深色深表面)+ 派生容器色指示器。
|
||||
// 底部导航(app-preview .nav):白底 + 顶部细线 + **无胶囊指示器**;
|
||||
// 选中 primary 蓝图标/文字,未选次文字色。
|
||||
navigationBarTheme: NavigationBarThemeData(
|
||||
backgroundColor: colorScheme.surface,
|
||||
surfaceTintColor: Colors.transparent,
|
||||
indicatorColor: colorScheme.secondaryContainer,
|
||||
height: 80,
|
||||
labelTextStyle: WidgetStatePropertyAll(
|
||||
textTheme.labelMedium!.copyWith(
|
||||
color: colorScheme.onSurface,
|
||||
indicatorColor: Colors.transparent,
|
||||
height: 68,
|
||||
iconTheme: WidgetStateProperty.resolveWith(
|
||||
(states) => IconThemeData(
|
||||
size: 24,
|
||||
color: states.contains(WidgetState.selected)
|
||||
? colorScheme.primary
|
||||
: (dark ? _textSecondaryDark : kColorTextSecondary),
|
||||
),
|
||||
),
|
||||
labelTextStyle: WidgetStateProperty.resolveWith(
|
||||
(states) => textTheme.labelMedium!.copyWith(
|
||||
color: states.contains(WidgetState.selected)
|
||||
? colorScheme.primary
|
||||
: (dark ? _textSecondaryDark : kColorTextSecondary),
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
@@ -207,7 +219,7 @@ abstract final class AppTheme {
|
||||
Color color, {
|
||||
double width = 1,
|
||||
}) => OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(kRadiusInput),
|
||||
borderRadius: BorderRadius.circular(kRadiusField),
|
||||
borderSide: BorderSide(color: color, width: width),
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user