import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import '../../core/router/routes.dart'; import '../../core/constants/app_colors.dart'; class MainShell extends StatelessWidget { final Widget child; const MainShell({super.key, required this.child}); @override Widget build(BuildContext context) { return Scaffold( body: child, bottomNavigationBar: BottomNavigationBar( type: BottomNavigationBarType.fixed, selectedItemColor: AppColors.primary, unselectedItemColor: AppColors.textMuted, items: const [ BottomNavigationBarItem(icon: Icon(Icons.home_outlined), activeIcon: Icon(Icons.home), label: '首页'), BottomNavigationBarItem(icon: Icon(Icons.analytics_outlined), activeIcon: Icon(Icons.analytics), label: '算力'), BottomNavigationBarItem(icon: Icon(Icons.swap_horiz_outlined), activeIcon: Icon(Icons.swap_horiz), label: '兑换'), BottomNavigationBarItem(icon: Icon(Icons.person_outline), activeIcon: Icon(Icons.person), label: '我的'), ], currentIndex: _calculateSelectedIndex(context), onTap: (index) => _onItemTapped(index, context), ), ); } int _calculateSelectedIndex(BuildContext context) { final location = GoRouterState.of(context).uri.path; if (location.startsWith(Routes.home)) return 0; if (location.startsWith(Routes.contribution)) return 1; if (location.startsWith(Routes.trading)) return 2; if (location.startsWith(Routes.profile)) return 3; return 0; } void _onItemTapped(int index, BuildContext context) { switch (index) { case 0: context.go(Routes.home); break; case 1: context.go(Routes.contribution); break; case 2: context.go(Routes.trading); break; case 3: context.go(Routes.profile); break; } } }