import 'package:flutter/material.dart'; import '../../../core/theme/app_colors.dart'; import '../../../core/theme/app_text_styles.dart'; import '../../../core/theme/app_dimensions.dart'; /// 启动页面 class SplashScreen extends StatefulWidget { const SplashScreen({super.key}); @override State createState() => _SplashScreenState(); } class _SplashScreenState extends State with SingleTickerProviderStateMixin { late AnimationController _animationController; late Animation _fadeAnimation; late Animation _scaleAnimation; @override void initState() { super.initState(); _initAnimations(); _navigateToNext(); } void _initAnimations() { _animationController = AnimationController( duration: const Duration(milliseconds: 2000), vsync: this, ); _fadeAnimation = Tween( begin: 0.0, end: 1.0, ).animate(CurvedAnimation( parent: _animationController, curve: const Interval(0.0, 0.6, curve: Curves.easeIn), )); _scaleAnimation = Tween( begin: 0.8, end: 1.0, ).animate(CurvedAnimation( parent: _animationController, curve: const Interval(0.2, 0.8, curve: Curves.elasticOut), )); _animationController.forward(); } Future _navigateToNext() async { await Future.delayed(const Duration(seconds: 3)); if (mounted) { // TODO: 检查用户登录状态,决定跳转到登录页还是主页 Navigator.of(context).pushReplacementNamed('/login'); } } @override void dispose() { _animationController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.primary, body: Center( child: AnimatedBuilder( animation: _animationController, builder: (context, child) { return FadeTransition( opacity: _fadeAnimation, child: ScaleTransition( scale: _scaleAnimation, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ // 应用图标 Container( width: AppDimensions.iconXxl * 2, height: AppDimensions.iconXxl * 2, decoration: BoxDecoration( color: AppColors.onPrimary, borderRadius: BorderRadius.circular( AppDimensions.radiusXl, ), boxShadow: [ BoxShadow( color: AppColors.shadow.withOpacity(0.3), blurRadius: 20, offset: const Offset(0, 10), ), ], ), child: Icon( Icons.school, size: AppDimensions.iconXxl, color: AppColors.primary, ), ), SizedBox(height: AppDimensions.spacingXl), // 应用名称 Text( 'AI English Learning', style: AppTextStyles.headlineLarge.copyWith( color: AppColors.onPrimary, fontWeight: FontWeight.bold, ), ), SizedBox(height: AppDimensions.spacingMd), // 副标题 Text( '智能英语学习助手', style: AppTextStyles.bodyLarge.copyWith( color: AppColors.onPrimary.withOpacity(0.8), ), ), SizedBox(height: AppDimensions.spacingXxl), // 加载指示器 SizedBox( width: 40, height: 40, child: CircularProgressIndicator( valueColor: AlwaysStoppedAnimation( AppColors.onPrimary, ), strokeWidth: 3, ), ), ], ), ), ); }, ), ), ); } }