import 'package:flutter/material.dart'; import 'package:food_hub_app/layout/drawer.dart'; import 'package:food_hub_app/layout/nav_bar.dart'; class HomePage extends StatefulWidget { const HomePage({super.key}); @override State createState() => _HomePage(); } class _HomePage extends State { int _currentIndex = 0; List get tabPages => pageInfos.map((item) => item.page).toList(); // 显示底部弹窗 void _showBottomSheet() { showModalBottomSheet( context: context, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.vertical(top: Radius.circular(16)), ), builder: (context) => Container( padding: const EdgeInsets.all(10), child: Column( mainAxisSize: MainAxisSize.min, children: [ const Text( '请选择操作', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), ), const SizedBox(height: 10), ListTile( leading: Icon( Icons.book, color: Theme.of(context).primaryColor, ), title: const Text('新增菜谱'), onTap: () { Navigator.pop(context); _handleAddRecipe(); }, ), ListTile( leading: Icon( Icons.note_add, color: Theme.of(context).primaryColor, ), title: const Text('新增记录'), onTap: () { Navigator.pop(context); Navigator.pushNamed(context, "/recordForm"); }, ), ListTile( leading: Icon( Icons.group, color: Theme.of(context).primaryColor, ), title: const Text('发布朋友圈'), onTap: () { Navigator.pop(context); _handleAddRecord(); }, ), ], ), ), ); } // 处理添加菜谱 void _handleAddRecipe() { // 这里添加跳转或处理添加菜谱的逻辑 ScaffoldMessenger.of( context, ).showSnackBar(const SnackBar(content: Text('添加菜谱功能'))); } // 处理添加记录 void _handleAddRecord() { // 这里添加跳转或处理添加记录的逻辑 ScaffoldMessenger.of( context, ).showSnackBar(const SnackBar(content: Text('添加记录功能'))); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: true, title: Text('食光集', style: TextStyle(color: Colors.white)), backgroundColor: Theme.of(context).colorScheme.primary, leading: Builder( builder: (context) { return IconButton( icon: const Icon(Icons.menu), color: Colors.white, onPressed: () => Scaffold.of(context).openDrawer(), ); }, ), actions: homeActions(context), ), backgroundColor: Color(0xFFF5F5F5), drawer: SettingsDrawer(), body: Padding( padding: EdgeInsets.all(4), child: tabPages[_currentIndex], ), floatingActionButton: FloatingActionButton( backgroundColor: Theme.of(context).primaryColor, onPressed: _showBottomSheet, shape: const CircleBorder(), mini: true, child: const Icon(Icons.add, color: Colors.white, size: 30), ), floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, bottomNavigationBar: NavBar( currentIndex: _currentIndex, onTap: (index) { setState(() { _currentIndex = index; }); }, ), ); } }