- 全新"朝露"主题:深青绿主色(#2D6A4F),暖白底,完整设计Token - 引入 shadcn_ui 组件库,MaterialApp 注入 ShadTheme - 新增 4 个公共组件:AppCard、AppMenuItem、AppEmptyState、AppTabChip - 全面消除硬编码颜色,统一使用 AppTheme Token - 全局字号 +3~4pt,图标等比放大 +3px - home/medication/profile/settings/login 等核心页面重写 - 路由和功能逻辑零改动
57 lines
1.6 KiB
Dart
57 lines
1.6 KiB
Dart
import 'package:flutter/material.dart';
|
||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||
import 'package:shadcn_ui/shadcn_ui.dart';
|
||
import 'core/app_router.dart';
|
||
import 'core/app_theme.dart';
|
||
import 'core/navigation_provider.dart';
|
||
|
||
/// 健康管家 App 根组件
|
||
class HealthApp extends ConsumerWidget {
|
||
const HealthApp({super.key});
|
||
|
||
@override
|
||
Widget build(BuildContext context, WidgetRef ref) {
|
||
return MaterialApp(
|
||
title: '健康管家',
|
||
debugShowCheckedModeBanner: false,
|
||
theme: AppTheme.lightTheme,
|
||
localizationsDelegates: const [
|
||
GlobalMaterialLocalizations.delegate,
|
||
GlobalWidgetsLocalizations.delegate,
|
||
GlobalCupertinoLocalizations.delegate,
|
||
],
|
||
supportedLocales: const [
|
||
Locale('zh', 'CN'),
|
||
Locale('zh'),
|
||
],
|
||
locale: const Locale('zh'),
|
||
home: const _RootNavigator(),
|
||
// 注入 ShadTheme,让所有页面都能用 shadcn 组件
|
||
builder: (context, child) => ShadTheme(
|
||
data: AppTheme.shadTheme,
|
||
child: child!,
|
||
),
|
||
);
|
||
}
|
||
}
|
||
|
||
/// 根导航——根据 Riverpod 路由状态切换页面
|
||
class _RootNavigator extends ConsumerWidget {
|
||
const _RootNavigator();
|
||
|
||
@override
|
||
Widget build(BuildContext context, WidgetRef ref) {
|
||
final stack = ref.watch(routeStackProvider);
|
||
final current = stack.last;
|
||
|
||
return PopScope(
|
||
canPop: stack.length <= 1,
|
||
onPopInvokedWithResult: (didPop, result) {
|
||
if (!didPop) popRoute(ref);
|
||
},
|
||
child: buildPage(current),
|
||
);
|
||
}
|
||
}
|