import 'package:flutter/material.dart'; import '../../home/screens/home_screen.dart'; import '../../learning/screens/learning_home_screen.dart'; import '../../profile/screens/profile_home_screen.dart'; /// 主应用界面,包含底部导航栏 class MainAppScreen extends StatefulWidget { const MainAppScreen({super.key}); @override State createState() => _MainAppScreenState(); } class _MainAppScreenState extends State { int _currentIndex = 0; final List _pages = [ const HomeScreen(), const LearningHomeScreen(), const ProfileHomeScreen(), ]; @override Widget build(BuildContext context) { return Scaffold( body: IndexedStack( index: _currentIndex, children: _pages, ), bottomNavigationBar: Container( decoration: BoxDecoration( color: Colors.white, boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.1), blurRadius: 10, offset: const Offset(0, -2), ), ], ), child: SafeArea( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 8.0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ _buildNavItem( icon: Icons.home, label: '首页', index: 0, ), _buildNavItem( icon: Icons.school, label: '学习', index: 1, ), _buildNavItem( icon: Icons.person, label: '我的', index: 2, ), ], ), ), ), ), ); } Widget _buildNavItem({ required IconData icon, required String label, required int index, }) { final isSelected = _currentIndex == index; final color = isSelected ? const Color(0xFF2196F3) : Colors.grey; return GestureDetector( onTap: () { setState(() { _currentIndex = index; }); }, child: Container( padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8), child: Column( mainAxisSize: MainAxisSize.min, children: [ Icon( icon, color: color, size: 24, ), const SizedBox(height: 2), Text( label, style: TextStyle( color: color, fontSize: 12, fontWeight: isSelected ? FontWeight.w600 : FontWeight.normal, ), ), ], ), ), ); } }