import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:wow_english/pages/module/course_module_page.dart'; import '../unit/view.dart'; import 'blocs/tab_bloc.dart'; class TabPage extends StatelessWidget { const TabPage({super.key}); final _pages =const [ UnitPage(), CourseModulePage() ]; final _tabIcons = const [ Icon(Icons.ac_unit), Icon(Icons.ac_unit_outlined) ]; final _tabTexts = const [ '页面1', '页面2' ]; @override Widget build(BuildContext context) { return Scaffold( body: _buildIndexedStack(), bottomNavigationBar: _buildBottomNavBars(), ); } Widget _buildIndexedStack() => BlocBuilder( builder: (context, state) => IndexedStack( index: state.index, children: _pages, ) ); Widget _buildBottomNavBars() => BlocBuilder( builder: (context, state) => Container( decoration: BoxDecoration( boxShadow: [ BoxShadow( color: Theme.of(context).dividerColor, blurRadius: .1 ) ] ), child: BottomNavigationBar( currentIndex: state.index, items: _buildBottomNavBarItems(context), onTap: (value) => context.read().add(UpdateTabIndexEvent(value)), ), ) ); List _buildBottomNavBarItems(BuildContext context) => _tabIcons.map((e) { final index = _tabIcons.indexOf(e); return BottomNavigationBarItem( label: _tabTexts[index], activeIcon: _tabIcons[index], icon: _tabIcons[index] );}).toList(); }