import 'package:flisp_app/layout/app_drawer.dart'; import 'package:flisp_app/pages/flash_page.dart'; import 'package:flisp_app/pages/notes_Page.dart'; import 'package:flisp_app/pages/reminders_page.dart'; import 'package:flisp_app/pages/todo_page.dart'; import 'package:flisp_app/provider/app_provider.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class MainScreen extends StatefulWidget { const MainScreen({super.key}); @override State createState() => _MainScreenState(); } class _MainScreenState extends State { final GlobalKey _todoPageKey = GlobalKey(); @override Widget build(BuildContext context) { return Consumer( builder: (context, appState, child) { return Scaffold( drawer: const AppDrawer(), appBar: AppBar( title: Text(_getAppBarTitle(appState.currentIndex)), backgroundColor: Colors.blue, foregroundColor: Colors.white, elevation: 0, ), body: _buildPage(appState.currentIndex), bottomNavigationBar: BottomNavigationBar( currentIndex: appState.currentIndex, onTap: (index) => appState.changeTab(index), type: BottomNavigationBarType.fixed, items: const [ BottomNavigationBarItem( icon: Icon(Icons.flash_on), label: '闪灵', ), BottomNavigationBarItem( icon: Icon(Icons.note), label: '笔记', ), BottomNavigationBarItem( icon: Icon(Icons.checklist), label: '待办', ), BottomNavigationBarItem( icon: Icon(Icons.notifications), label: '提醒', ), ], ), floatingActionButton: _buildFloatingActionButton(appState.currentIndex), ); }, ); } Widget? _buildFloatingActionButton(int currentIndex) { if (currentIndex == 2) { return FloatingActionButton( onPressed: _showAddTodoDialog, backgroundColor: Colors.transparent, elevation: 0, child: Container( width: 50, height: 50, decoration: BoxDecoration( shape: BoxShape.circle, gradient: LinearGradient( colors: [Colors.orange.shade300, Colors.orange.shade500], begin: Alignment.topLeft, end: Alignment.bottomRight, ), boxShadow: [ BoxShadow( color: Colors.orange.shade100, blurRadius: 12, offset: Offset(0, 6), ), ], ), child: Icon(Icons.add, color: Colors.white, size: 36), ), ); } return null; } void _showAddTodoDialog() { // 通过 GlobalKey 调用 TodoPage 的方法 if (_todoPageKey.currentState != null) { _todoPageKey.currentState!.showAddTodoDialog(); } } Widget _buildPage(int index) { switch (index) { case 0: return const FlashPage(); case 1: return const NotesPage(); case 2: return TodoPage(key: _todoPageKey); // 传递 key case 3: return const RemindersPage(); default: return const FlashPage(); } } String _getAppBarTitle(int index) { final titles = { 0: '闪灵', 1: '笔记', 2: '待办事项', 3: '提醒任务', }; return titles[index] ?? '闪灵'; } }