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

+45 -15
View File
@@ -13,6 +13,7 @@ import '../../core/formatting/error_text.dart';
import '../../core/formatting/localized_content.dart';
import '../../core/platform/haptics.dart';
import '../../core/theme/app_colors.dart';
import '../../core/theme/app_dimens.dart';
import '../../core/theme/app_theme.dart';
import '../../core/widgets/remote_image.dart';
import '../../core/widgets/auth_gate.dart';
@@ -78,14 +79,24 @@ class _DramaDetailPageState extends State<DramaDetailPage> {
Widget _page(BuildContext context) {
final l10n = AppLocalizations.of(context)!;
if (logic.loading) {
return const Scaffold(
return Scaffold(
backgroundColor: AppColors.ink,
body: Center(child: CircularProgressIndicator()),
appBar: AppBar(
backgroundColor: AppColors.ink,
foregroundColor: AppColors.onPrimary,
title: Text(localizedDramaTitle(l10n, widget.drama)),
),
body: const Center(child: CircularProgressIndicator()),
);
}
if (logic.failed) {
return Scaffold(
backgroundColor: AppColors.ink,
appBar: AppBar(
backgroundColor: AppColors.ink,
foregroundColor: AppColors.onPrimary,
title: Text(localizedDramaTitle(l10n, widget.drama)),
),
body: Center(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 32),
@@ -140,11 +151,25 @@ class _DramaDetailPageState extends State<DramaDetailPage> {
_favoriteAction(context, l10n),
],
flexibleSpace: FlexibleSpaceBar(
background: RemoteImage(drama.posterUrl),
background: Stack(
fit: StackFit.expand,
children: [
RemoteImage(drama.posterUrl),
const DecoratedBox(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.center,
colors: [Color(0x99000000), Color(0x00000000)],
),
),
),
],
),
),
),
SliverPadding(
padding: const EdgeInsets.fromLTRB(24, 24, 24, 40),
padding: const EdgeInsets.fromLTRB(16, 16, 16, 40),
sliver: SliverList(
delegate: SliverChildListDelegate([
Text(
@@ -158,16 +183,17 @@ class _DramaDetailPageState extends State<DramaDetailPage> {
const SizedBox(height: 8),
Text(
localizedDramaTitle(l10n, drama),
style: Theme.of(context).textTheme.headlineLarge?.copyWith(
style: const TextStyle(
fontSize: AppDimens.detailHeadline,
fontWeight: FontWeight.w800,
),
),
const SizedBox(height: 10),
Text(
localizedDramaSynopsis(l10n, drama),
style: Theme.of(context).textTheme.bodyLarge?.copyWith(
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
style: Theme.of(
context,
).textTheme.bodyLarge?.copyWith(color: AppColors.muted),
),
const SizedBox(height: 20),
Column(
@@ -222,15 +248,16 @@ class _DramaDetailPageState extends State<DramaDetailPage> {
const SizedBox(height: 30),
Text(
l10n.episodes,
style: Theme.of(
context,
).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.bold),
style: Theme.of(context).textTheme.titleLarge?.copyWith(
fontSize: AppDimens.sectionTitle,
fontWeight: FontWeight.w700,
),
),
]),
),
),
SliverPadding(
padding: const EdgeInsets.fromLTRB(24, 0, 24, 40),
padding: const EdgeInsets.fromLTRB(16, 0, 16, 40),
sliver: SliverList.builder(
itemCount: drama.episodes.length,
itemBuilder: (context, index) {
@@ -364,10 +391,10 @@ class _ResumeBar extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ClipRRect(
borderRadius: BorderRadius.circular(2),
borderRadius: BorderRadius.circular(AppDimens.progressRadius),
child: LinearProgressIndicator(
value: fraction,
minHeight: 3,
minHeight: AppDimens.progressHeight,
backgroundColor: Colors.white24,
valueColor: const AlwaysStoppedAnimation(AppColors.blueSoft),
),
@@ -376,7 +403,10 @@ class _ResumeBar extends StatelessWidget {
const SizedBox(height: 4),
Text(
label!,
style: const TextStyle(color: Colors.white54, fontSize: 11),
style: const TextStyle(
color: AppColors.muted,
fontSize: AppDimens.caption,
),
),
],
],