import 'package:flutter/material.dart'; import 'package:food_hub_app/provider/food_provider.dart'; import 'package:food_hub_app/widgets/common/index.dart'; import 'package:food_hub_app/widgets/recipe/calendar.dart'; import 'package:food_hub_app/widgets/recipe/list.dart'; import 'package:food_hub_app/widgets/recipe/timeline.dart'; import 'package:provider/provider.dart'; enum RecordTab { recipe('菜谱'), calendar('日历'), timeline('时间轴'); final String label; const RecordTab(this.label); } class RecordPage extends StatefulWidget { const RecordPage({super.key}); @override State createState() => _RecordPageState(); } class _RecordPageState extends State { RecordTab _currentTab = RecordTab.recipe; final List _tabPages = [ RecipeList(), RecipeCalendar(), RecipeTimeline(), ]; Widget _buildTabs({ required BuildContext context, required RecordTab currentTab, required ValueChanged onTabChanged, }) { return Container( padding: EdgeInsets.all(8), child: buildToggleSwitch( context: context, currentTab: currentTab, tabValues: RecordTab.values, labels: RecordTab.values.map((e) => e.label).toList(), onTabChanged: onTabChanged, ), ); } void _onTabChange(RecordTab tab, FoodProvider provider) { setState(() { _currentTab = tab; }); switch (tab) { case RecordTab.recipe: provider.refreshRecipeList(); break; case RecordTab.calendar: provider.refreshRecordList(null, null); break; case RecordTab.timeline: final year = DateTime.now().year; provider.refreshRecordList("$year-01-01", "$year-12-31"); break; } } @override Widget build(BuildContext context) { final provider = context.watch(); return Column( children: [ _buildTabs( context: context, currentTab: _currentTab, onTabChanged: (tab) => _onTabChange(tab, provider), ), Expanded( child: IndexedStack(index: _currentTab.index, children: _tabPages), ), ], ); } }