style: 统一全站深色视觉

This commit is contained in:
Zhou Weidong committed 2026-10-22 22:01:36 +08:00
1 parent 86aa7e0f4f
commit 37e35f4b47
24 files changed
+134 -130

No files matched your search

+1 -1
View File
@@ -76,7 +76,7 @@ class _AuthCard extends StatelessWidget {
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(_cardRadius),
boxShadow: const [AppTheme.cardShadow],
border: Border.all(color: AppColors.border),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
+4 -3
View File
@@ -227,8 +227,8 @@ class _PolicyPanel extends StatelessWidget {
padding: const EdgeInsets.fromLTRB(16, 16, 16, 12),
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(AppDimens.innerRadius),
border: Border.all(color: AppColors.outlineVariantDark),
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
border: Border.all(color: AppColors.border),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -362,7 +362,8 @@ class _LicenseTile extends StatelessWidget {
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(AppDimens.innerRadius),
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
border: Border.all(color: AppColors.border),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import '../../../core/data/models/drama.dart';
import '../../../core/formatting/localized_content.dart';
import '../../../core/theme/app_colors.dart';
import '../../../core/theme/app_theme.dart';
import '../../../core/widgets/remote_image.dart';
import '../../../core/widgets/subpage_header.dart';
import '../../../l10n/app_localizations.dart';
@@ -53,13 +54,7 @@ class DramaDetailHeader extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
key: const Key('detail-hero'),
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [AppColors.surfaceTop, AppColors.ink],
),
),
decoration: const BoxDecoration(gradient: AppTheme.pageGradient),
child: SafeArea(
bottom: false,
child: Padding(
@@ -5,12 +5,13 @@ import 'package:flutter/material.dart';
import '../../../core/data/models/drama.dart';
import '../../../core/formatting/count_format.dart';
import '../../../core/theme/app_colors.dart';
import '../../../core/theme/app_dimens.dart';
import '../../../l10n/app_localizations.dart';
const double _horizontal = 14;
const double _sectionTop = 16;
const double _statsVertical = 12;
const double _statsRadius = 14;
const double _statsRadius = AppDimens.cardRadius;
const double _dividerHeight = 28;
const int _synopsisLines = 3;
const int _gridColumns = 6;
@@ -63,6 +64,7 @@ class DramaStatsCard extends StatelessWidget {
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(_statsRadius),
border: Border.all(color: AppColors.border),
),
child: Row(
children: [
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import '../../../core/formatting/error_text.dart';
import '../../../core/theme/app_colors.dart';
import '../../../core/theme/app_dimens.dart';
import '../../../l10n/app_localizations.dart';
const int _skeletonCount = 6;
@@ -138,7 +139,8 @@ class DramaEpisodesLoadError extends StatelessWidget {
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(14),
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
border: Border.all(color: AppColors.border),
),
child: Column(
children: [
+3 -2
View File
@@ -12,6 +12,7 @@ import '../../core/formatting/count_format.dart';
import '../../core/formatting/error_text.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/app_pull_to_refresh.dart';
import '../../core/widgets/auth_gate.dart';
@@ -24,7 +25,7 @@ import '../player/open_player.dart';
import 'favorites_binding.dart';
const double _pageHorizontal = 14;
const double _cardRadius = 14;
const double _cardRadius = AppDimens.cardRadius;
const double _cardPadding = 10;
const double _coverWidth = 80;
const double _coverHeight = 106;
@@ -273,7 +274,7 @@ class _FavoriteCard extends StatelessWidget {
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(_cardRadius),
boxShadow: const [AppTheme.cardShadow],
border: Border.all(color: AppColors.border),
),
child: Material(
color: AppColors.transparent,
+1
View File
@@ -255,6 +255,7 @@ class _FilterPageState extends State<FilterPage> {
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(12),
border: Border.all(color: AppColors.border),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
+3 -14
View File
@@ -10,6 +10,7 @@ import '../../core/data/models/drama.dart';
import '../../core/data/services/catalog_controller.dart';
import '../../core/formatting/count_format.dart';
import '../../core/theme/app_colors.dart';
import '../../core/theme/app_theme.dart';
import '../../core/widgets/app_pull_to_refresh.dart';
import '../../core/widgets/paged_local_list.dart';
import '../../core/widgets/remote_image.dart';
@@ -107,13 +108,7 @@ class _NewReleasesPageState extends State<NewReleasesPage> {
key: const Key('new-releases-page'),
backgroundColor: AppColors.ink,
body: DecoratedBox(
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [AppColors.surfaceTop, AppColors.ink],
),
),
decoration: const BoxDecoration(gradient: AppTheme.pageGradient),
child: SafeArea(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -407,13 +402,7 @@ class _NewReleasesPageState extends State<NewReleasesPage> {
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(_cardRadius),
boxShadow: const [
BoxShadow(
color: AppColors.cardShadow,
blurRadius: 12,
offset: Offset(0, 4),
),
],
border: Border.all(color: AppColors.border),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
+4 -1
View File
@@ -213,7 +213,10 @@ class _NoticeTile extends StatelessWidget {
return Material(
key: ValueKey('notice-item-${notice.id}'),
color: AppColors.card,
borderRadius: BorderRadius.circular(AppDimens.innerRadius),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
side: const BorderSide(color: AppColors.border),
),
clipBehavior: Clip.antiAlias,
child: InkWell(
onTap: onTap,
+4 -4
View File
@@ -9,7 +9,7 @@ import '../../core/data/models/drama.dart';
import '../../core/data/services/catalog_controller.dart';
import '../../core/formatting/count_format.dart';
import '../../core/theme/app_colors.dart';
import '../../core/theme/app_theme.dart';
import '../../core/theme/app_dimens.dart';
import '../../core/widgets/app_pull_to_refresh.dart';
import '../../core/widgets/empty_state.dart';
import '../../core/widgets/paged_local_list.dart';
@@ -341,12 +341,12 @@ class _RankingRow extends StatelessWidget {
return Container(
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(14),
boxShadow: const [AppTheme.cardShadow],
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
border: Border.all(color: AppColors.border),
),
child: Material(
color: AppColors.transparent,
borderRadius: BorderRadius.circular(14),
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
clipBehavior: Clip.antiAlias,
child: InkWell(
key: Key('ranking-row-$index'),
+3 -1
View File
@@ -5,12 +5,13 @@ import 'package:provider/provider.dart';
import '../../core/data/services/catalog_controller.dart';
import '../../core/theme/app_colors.dart';
import '../../core/theme/app_dimens.dart';
import '../../core/widgets/app_pull_to_refresh.dart';
import '../../core/widgets/subpage_header.dart';
import '../../l10n/app_localizations.dart';
import '../new_releases/new_releases_page.dart';
const double _ticketRadius = 20;
const double _ticketRadius = AppDimens.cardRadius;
const double _notchSize = 24;
const Color _ticketDash = AppColors.primaryBorder;
@@ -163,6 +164,7 @@ class _ReservePageState extends State<ReservePage> {
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(_ticketRadius),
border: Border.all(color: AppColors.border),
),
child: Column(
children: [
+5 -1
View File
@@ -7,6 +7,7 @@ import 'package:provider/provider.dart';
import '../../core/data/services/auth_controller.dart';
import '../../core/theme/app_colors.dart';
import '../../core/theme/app_dimens.dart';
import '../../core/theme/app_theme.dart';
import '../../core/widgets/auth_gate.dart';
import '../../core/widgets/plain_page_scaffold.dart';
@@ -47,7 +48,10 @@ class SettingsPage extends StatelessWidget {
Widget _noticesTile(BuildContext context, AppLocalizations l10n) {
return Material(
color: AppColors.card,
borderRadius: BorderRadius.circular(14),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
side: const BorderSide(color: AppColors.border),
),
clipBehavior: Clip.antiAlias,
child: ListTile(
key: const Key('settings-notices'),
+2 -2
View File
@@ -151,8 +151,8 @@ class _ProductTile extends StatelessWidget {
padding: const EdgeInsets.fromLTRB(14, 14, 12, 14),
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(16),
border: Border.all(color: AppColors.gold.withValues(alpha: 0.26)),
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
border: Border.all(color: AppColors.border),
),
child: Row(
children: [
+3 -14
View File
@@ -183,20 +183,9 @@ class _BalanceHero extends StatelessWidget {
key: const Key('wallet-balance-card'),
padding: const EdgeInsets.fromLTRB(20, 22, 20, 20),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
gradient: const LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [AppColors.goldCard, AppColors.card],
),
border: Border.all(color: AppColors.gold.withValues(alpha: 0.35)),
boxShadow: [
BoxShadow(
color: AppColors.gold.withValues(alpha: 0.08),
blurRadius: 28,
offset: const Offset(0, 14),
),
],
color: AppColors.card,
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
border: Border.all(color: AppColors.border),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -5,11 +5,11 @@ import 'package:flutter/material.dart';
import '../../../core/data/models/watch_record.dart';
import '../../../core/formatting/localized_date_time.dart';
import '../../../core/theme/app_colors.dart';
import '../../../core/theme/app_theme.dart';
import '../../../core/theme/app_dimens.dart';
import '../../../core/widgets/remote_image.dart';
import '../../../l10n/app_localizations.dart';
const double _cardRadius = 14;
const double _cardRadius = AppDimens.cardRadius;
const double _cardPadding = 10;
const double _coverWidth = 72;
const double _coverHeight = 96;
@@ -187,7 +187,7 @@ class WatchRecordCard extends StatelessWidget {
BoxDecoration _cardDecoration() => BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(_cardRadius),
boxShadow: const [AppTheme.cardShadow],
border: Border.all(color: AppColors.border),
);
Widget _removeButton(String tooltip) {
@@ -227,7 +227,7 @@ class _FailedRecordTile extends StatelessWidget {
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(_cardRadius),
boxShadow: const [AppTheme.cardShadow],
border: Border.all(color: AppColors.border),
),
child: Container(
key: ValueKey('watch-record-failed-${record.dramaId}'),