Files
food_hub_app/lib/views/record.dart
2025-11-18 11:46:21 +08:00

69 lines
1.6 KiB
Dart

import 'package:flutter/material.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';
enum RecordTab {
recipe('菜谱'),
calendar('日历'),
timeline('时间轴');
final String label;
const RecordTab(this.label);
}
class RecordPage extends StatefulWidget {
const RecordPage({super.key});
@override
State<StatefulWidget> createState() => _RecordPageState();
}
class _RecordPageState extends State<RecordPage> {
RecordTab _currentTab = RecordTab.recipe;
final List<Widget> _tabPages = [
RecipeList(),
RecipeCalendar(),
RecipeTimeline(),
];
Widget buildTabs({
required BuildContext context,
required RecordTab currentTab,
required ValueChanged<RecordTab> 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,
),
);
}
@override
Widget build(BuildContext context) {
return Column(
children: [
buildTabs(
context: context,
currentTab: _currentTab,
onTabChanged: (tab) {
setState(() {
_currentTab = tab;
});
},
),
Expanded(
child: IndexedStack(index: _currentTab.index, children: _tabPages),
),
],
);
}
}