feat(flutter): 应用浅色暖橙视觉主题

This commit is contained in:
Zhou Weidong committed 2026-10-20 10:15:03 +08:00
1 parent 0d2367431d
commit 634b63e16c
56 files changed
+941 -409

No files matched your search

+15 -9
View File
@@ -8,7 +8,6 @@ import 'package:provider/provider.dart';
import '../../core/data/models/drama.dart';
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/empty_state.dart';
@@ -32,8 +31,11 @@ class HomePage extends StatelessWidget {
if (!catalog.settled) return const SplashPage();
final l10n = AppLocalizations.of(context)!;
return Theme(
data: AppTheme.dark(),
child: _buildHome(context, catalog, l10n),
data: AppTheme.light(),
child: DecoratedBox(
decoration: const BoxDecoration(gradient: AppTheme.pageGradient),
child: _buildHome(context, catalog, l10n),
),
);
}
@@ -44,19 +46,19 @@ class HomePage extends StatelessWidget {
) {
if (catalog.loading) {
return const Scaffold(
backgroundColor: AppColors.ink,
backgroundColor: Colors.transparent,
body: Center(child: CircularProgressIndicator()),
);
}
if (catalog.error != null) {
return Scaffold(
backgroundColor: AppColors.ink,
backgroundColor: Colors.transparent,
body: HomeFailureView(onRetry: catalog.load),
);
}
if (catalog.dramas.isEmpty) {
return Scaffold(
backgroundColor: AppColors.ink,
backgroundColor: Colors.transparent,
body: EmptyState(
key: const Key('home-empty'),
icon: Icons.movie_outlined,
@@ -75,7 +77,7 @@ class HomePage extends StatelessWidget {
}
}
/// Home catalog failure with a single recovery action.
/// 首页目录加载失败与重试入口。
class HomeFailureView extends StatelessWidget {
const HomeFailureView({super.key, required this.onRetry});
@@ -93,7 +95,7 @@ class HomeFailureView extends StatelessWidget {
}
}
/// The four primary destinations share a single route and keep their state.
/// 四个根页面共享同一路由并保持各自状态。
class _HomeTabs extends StatefulWidget {
const _HomeTabs({super.key, required this.dramas});
@@ -136,7 +138,7 @@ class _HomeTabsState extends State<_HomeTabs> {
},
child: Scaffold(
key: logic.scaffoldKey,
backgroundColor: AppColors.ink,
backgroundColor: Colors.transparent,
body: _body(context),
bottomNavigationBar: logic.videoImmersive ? null : _nav(context, l10n),
),
@@ -193,6 +195,10 @@ class _HomeTabsState extends State<_HomeTabs> {
Widget _nav(BuildContext context, AppLocalizations l10n) {
return AppBottomNav(
barKey: const Key('home-tabs-bar'),
centerAction: AppBottomNavCenterAction(
label: l10n.createTab,
onTap: () => _selectTab(context, 2),
),
items: [
_navItem(context, l10n, 0),
_navItem(context, l10n, 1),