Aidra Connect 10.0.2+16
Aidra Connect Mobile Application
Loading...
Searching...
No Matches
food_screen.dart
Go to the documentation of this file.
1import 'package:connect/core/ui/widgets/custom_scaffold.dart';
2import 'package:connect/features/co2_emmissions/screens/food/views/adjust_menu_based.dart';
3import 'package:connect/features/co2_emmissions/screens/food/views/average_portion_size.dart';
4import 'package:connect/features/co2_emmissions/screens/food/views/local_ingredients_percentage_view.dart';
5import 'package:connect/features/co2_emmissions/screens/food/views/susutanable_sourcing.dart';
6import 'package:connect/features/co2_emmissions/screens/food/views/total_ingredient_weight.dart';
7import 'package:connect/features/co2_emmissions/screens/operational_details_screen/views/operational_hours_view.dart';
8import 'package:connect/features/co2_emmissions/screens/operational_details_screen/views/opetrational_days_view.dart';
9import 'package:connect/features/co2_emmissions/screens/widgets/page_navigator.dart';
10import 'package:flutter/material.dart';
11import 'package:flutter_screenutil/flutter_screenutil.dart';
12
13class FoodScreen extends StatefulWidget {
14 const FoodScreen({super.key});
15
16 @override
17 State<FoodScreen> createState() => _FoodScreenState();
18}
19
20class _FoodScreenState extends State<FoodScreen> {
21 final PageController _pageController = PageController(keepPage: true);
22 late final List<Widget> _pages;
24
25 @override
26 void initState() {
27 super.initState();
28 _pages = [
29 const KeepAlivePage(child: TotalIngredientWeight()),
30 const KeepAlivePage(child: AveragePortionSize()),
31 const KeepAlivePage(child: LocalIngredientsPercentageView()),
32 const KeepAlivePage(child: AdjustMenuBased()),
33 const KeepAlivePage(child: SustanableSourcing()),
34 ];
35
37 }
38
40 final newIndex = _pageController.page?.round() ?? 0;
41 if (newIndex != _currentPageIndex) {
42 setState(() => _currentPageIndex = newIndex);
43 }
44 }
45
46 @override
47 void dispose() {
48 _pageController.removeListener(_updatePageIndex);
49 _pageController.dispose();
50 super.dispose();
51 }
52
53 @override
54 Widget build(BuildContext context) {
55 return CustomScaffold(
56 floating: PageNavigator(
57 tottalPages: 5,
58 currentPage: _currentPageIndex,
59 pageController: _pageController,
60 ),
61 isLeadingVisible: true,
62 title: 'Operational Details',
63 body: SafeArea(
64 child: Padding(
65 padding: EdgeInsets.only(bottom: 100.sp),
66 child: PageView(
67 physics: const NeverScrollableScrollPhysics(),
68 controller: _pageController,
69 children: _pages,
70 ),
71 ),
72 ),
73 );
74 }
75}
76
77class KeepAlivePage extends StatefulWidget {
78 final Widget child;
79
81 super.key,
82 required this.child,
83 });
84
85 @override
86 State<KeepAlivePage> createState() => _KeepAlivePageState();
87}
88
89class _KeepAlivePageState extends State<KeepAlivePage>
90 with AutomaticKeepAliveClientMixin {
91 @override
92 Widget build(BuildContext context) {
93 super.build(context);
94 return widget.child;
95 }
96
97 @override
98 bool get wantKeepAlive => true;
99}
override State< KeepAlivePage > createState()
override State< FoodScreen > createState()
const KeepAlivePage({ super.key, required this.child, })
const FoodScreen({super.key})
final Widget child
override void dispose()
final Widget child
final EdgeInsets padding
override void initState()
class EnergyScreen extends StatefulWidget _pageController
int _currentPageIndex
const KeepAlivePage({ super.key, required this.child, })
void _updatePageIndex()
late final List< Widget > _pages
override bool get wantKeepAlive
override Widget build(BuildContext context)
final String title