import 'package:flutter/material.dart'; import '../../core/theme/app_theme.dart'; import '../../screens/feed/feed_screen.dart'; import '../../screens/profile/mine_screen.dart'; /// 首页壳:底部 Tab(首页/分类/发布/消息/我的),02-技术文档信息架构 /// 首页 Tab 为 Feed 播放页,我的页已接入,其余 Tab 随迭代接入;IndexedStack 保活各 Tab 状态 class HomeShell extends StatefulWidget { const HomeShell({super.key}); @override State createState() => _HomeShellState(); } class _HomeShellState extends State { int _index = 0; @override Widget build(BuildContext context) { return Scaffold( body: IndexedStack( index: _index, children: const [ FeedScreen(), _TabPlaceholder('分类'), _TabPlaceholder('发布'), _TabPlaceholder('消息'), MineScreen(), ], ), bottomNavigationBar: NavigationBar( backgroundColor: AppColors.surface, indicatorColor: AppColors.primary.withValues(alpha: 0.2), selectedIndex: _index, onDestinationSelected: (i) => setState(() => _index = i), destinations: const [ NavigationDestination( icon: Icon(Icons.home_outlined), selectedIcon: Icon(Icons.home, color: AppColors.primary), label: '首页', ), NavigationDestination( icon: Icon(Icons.grid_view_outlined), label: '分类', ), NavigationDestination( icon: Icon(Icons.add_box_outlined), label: '发布', ), NavigationDestination( icon: Icon(Icons.notifications_none), label: '消息', ), NavigationDestination( icon: Icon(Icons.person_outline), label: '我的', ), ], ), ); } } /// Tab 占位(迭代期) class _TabPlaceholder extends StatelessWidget { const _TabPlaceholder(this.title); final String title; @override Widget build(BuildContext context) { return Center( child: Text( '$title(随迭代接入)', style: const TextStyle(color: AppColors.textSecondary, fontSize: 15), ), ); } }