style(ui): 统一页面字号间距与状态样式

This commit is contained in:
Zhou Weidong committed 2026-10-19 10:21:28 +08:00
1 parent df5fbe5b08
commit c5bfd006fa
23 files changed
+542 -569

No files matched your search

+35 -113
View File
@@ -13,6 +13,7 @@ import '../../core/data/services/catalog_controller.dart';
import '../../core/platform/haptics.dart';
import '../../core/theme/app_colors.dart';
import '../../core/theme/app_theme.dart';
import '../../core/widgets/app_bottom_nav.dart';
import '../../core/widgets/auth_gate.dart';
import '../../core/widgets/empty_state.dart';
import '../../core/widgets/server_endpoint_dialog.dart';
@@ -239,57 +240,42 @@ class _HomeTabsState extends State<_HomeTabs> {
),
bottomNavigationBar: logic.videoImmersive
? null
: SafeArea(
top: false,
minimum: const EdgeInsets.only(bottom: 2),
child: Container(
key: const Key('home-tabs-bar'),
height: 64,
decoration: BoxDecoration(
color: AppColors.bar,
border: Border(
top: BorderSide(
color: Theme.of(context).colorScheme.outlineVariant,
),
),
: AppBottomNav(
barKey: const Key('home-tabs-bar'),
items: [
AppBottomNavItem(
tabKey: const Key('tab-discover'),
icon: Icons.home_outlined,
selectedIcon: Icons.home_rounded,
label: l10n.homeTab,
selected: logic.tab == 1,
onTap: () => _selectTab(context, 1),
),
child: Row(
children: [
_TabButton(
key: const Key('tab-discover'),
icon: Icons.home_outlined,
selectedIcon: Icons.home_rounded,
label: l10n.homeTab,
selected: logic.tab == 1,
onTap: () => _selectTab(context, 1),
),
_TabButton(
key: const Key('tab-home'),
icon: Icons.movie_outlined,
selectedIcon: Icons.movie_rounded,
label: l10n.shortsTab,
selected: logic.tab == 0,
onTap: () => _selectTab(context, 0),
),
_TabButton(
key: const Key('tab-my-list'),
icon: Icons.bookmark_border_rounded,
selectedIcon: Icons.bookmark_rounded,
label: l10n.myListTab,
selected: logic.tab == 2 && !logic.profile,
onTap: () => _selectTab(context, 2),
),
_TabButton(
key: const Key('tab-my'),
icon: Icons.person_outline_rounded,
selectedIcon: Icons.person_rounded,
label: l10n.myTab,
selected: logic.tab == 2 && logic.profile,
onTap: () => _selectTab(context, 2, myProfile: true),
),
],
AppBottomNavItem(
tabKey: const Key('tab-home'),
icon: Icons.movie_outlined,
selectedIcon: Icons.movie_rounded,
label: l10n.shortsTab,
selected: logic.tab == 0,
onTap: () => _selectTab(context, 0),
),
),
AppBottomNavItem(
tabKey: const Key('tab-my-list'),
icon: Icons.bookmark_border_rounded,
selectedIcon: Icons.bookmark_rounded,
label: l10n.myListTab,
selected: logic.tab == 2 && !logic.profile,
onTap: () => _selectTab(context, 2),
),
AppBottomNavItem(
tabKey: const Key('tab-my'),
icon: Icons.person_outline_rounded,
selectedIcon: Icons.person_rounded,
label: l10n.myTab,
selected: logic.tab == 2 && logic.profile,
onTap: () => _selectTab(context, 2, myProfile: true),
),
],
),
),
);
@@ -309,67 +295,3 @@ class _HomeTabsState extends State<_HomeTabs> {
}
}
}
class _TabButton extends StatelessWidget {
const _TabButton({
super.key,
required this.icon,
required this.selectedIcon,
required this.label,
required this.selected,
required this.onTap,
});
final IconData icon;
final IconData selectedIcon;
final String label;
final bool selected;
final VoidCallback onTap;
@override
Widget build(BuildContext context) => Expanded(
child: Semantics(
button: true,
selected: selected,
label: label,
child: InkWell(
onTap: onTap,
child: ConstrainedBox(
constraints: const BoxConstraints(minHeight: 48),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
AnimatedContainer(
duration: const Duration(milliseconds: 160),
curve: Curves.easeOut,
padding: const EdgeInsets.symmetric(
horizontal: 14,
vertical: 3,
),
decoration: BoxDecoration(
color: selected ? AppColors.blue : null,
borderRadius: BorderRadius.circular(14),
),
child: Icon(
selected ? selectedIcon : icon,
size: 22,
color: selected ? AppColors.onPrimary : AppColors.muted,
),
),
const SizedBox(height: 2),
Text(
label,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 10,
fontWeight: selected ? FontWeight.w700 : FontWeight.w500,
color: selected ? AppColors.blueSoft : AppColors.muted,
),
),
],
),
),
),
),
);
}
+11 -8
View File
@@ -7,6 +7,7 @@ import '../../../core/config/locale_controller.dart';
import '../../../core/data/models/drama.dart';
import '../../../core/formatting/localized_content.dart';
import '../../../core/theme/app_colors.dart';
import '../../../core/theme/app_dimens.dart';
import '../../../core/widgets/remote_image.dart';
import '../../../l10n/app_localizations.dart';
@@ -51,7 +52,7 @@ class HomeQuickDrawer extends StatelessWidget {
children: [
const CircleAvatar(
radius: 30,
backgroundColor: Color(0xFF4B4142),
backgroundColor: AppColors.raised,
child: Icon(
Icons.person_rounded,
size: 34,
@@ -74,7 +75,7 @@ class HomeQuickDrawer extends StatelessWidget {
const SizedBox(height: 3),
Text(
l10n.localDemoProfile,
style: const TextStyle(color: Color(0xFFE7E2E0)),
style: const TextStyle(color: AppColors.cream),
),
],
),
@@ -91,7 +92,9 @@ class HomeQuickDrawer extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ClipRRect(
borderRadius: BorderRadius.circular(10),
borderRadius: BorderRadius.circular(
AppDimens.innerRadius,
),
child: RemoteImage(
drama.posterUrl,
width: 74,
@@ -115,7 +118,7 @@ class HomeQuickDrawer extends StatelessWidget {
const SizedBox(height: 7),
Text(
l10n.episodeCount(drama.episodeCount),
style: const TextStyle(color: Color(0xFFE7E2E0)),
style: const TextStyle(color: AppColors.cream),
),
],
),
@@ -229,7 +232,7 @@ class _SectionCard extends StatelessWidget {
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: HomeQuickDrawer._card,
borderRadius: BorderRadius.circular(18),
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -259,11 +262,11 @@ class _QuickAction extends StatelessWidget {
@override
Widget build(BuildContext context) => Material(
color: const Color(0xFF3B3B3F),
borderRadius: BorderRadius.circular(12),
color: AppColors.raised,
borderRadius: BorderRadius.circular(AppDimens.innerRadius),
child: InkWell(
onTap: onTap,
borderRadius: BorderRadius.circular(12),
borderRadius: BorderRadius.circular(AppDimens.innerRadius),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 14, horizontal: 7),
child: Column(