Aidra Connect 10.0.2+16
Aidra Connect Mobile Application
Loading...
Searching...
No Matches
operational_details_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/operational_details_screen/views/operational_hours_view.dart';
3import 'package:connect/features/co2_emmissions/screens/operational_details_screen/views/opetrational_days_view.dart';
4import 'package:connect/features/co2_emmissions/screens/widgets/page_navigator.dart';
5import 'package:flutter/material.dart';
6import 'package:flutter_screenutil/flutter_screenutil.dart';
7
8class OperationalDetailsScreen extends StatefulWidget {
9 const OperationalDetailsScreen({super.key});
10
11 @override
12 State<OperationalDetailsScreen> createState() => _OperationalDetailsScreenState();
13}
14
15class _OperationalDetailsScreenState extends State<OperationalDetailsScreen> {
16 final PageController _pageController = PageController(keepPage: true);
17 late final List<Widget> _pages;
19
20 @override
21 void initState() {
22 super.initState();
23 _pages = [
24 const KeepAlivePage(child: OpertaionalHoursView()),
25 const KeepAlivePage(child: OpertaionalDaysView()),
26 ];
27
29 }
30
32 final newIndex = _pageController.page?.round() ?? 0;
33 if (newIndex != _currentPageIndex) {
34 setState(() => _currentPageIndex = newIndex);
35 }
36 }
37
38 @override
39 void dispose() {
40 _pageController.removeListener(_updatePageIndex);
41 _pageController.dispose();
42 super.dispose();
43 }
44
45 @override
46 Widget build(BuildContext context) {
47 return CustomScaffold(
48 floating: PageNavigator(
49 tottalPages: 2,
50 currentPage: _currentPageIndex,
51 pageController: _pageController,
52 ),
53 isLeadingVisible: true,
54 title: 'Operational Details',
55 body: SafeArea(
56 child: Padding(
57 padding: EdgeInsets.only(bottom: 100.sp),
58 child: PageView(
59 physics: const NeverScrollableScrollPhysics(),
60 controller: _pageController,
61 children: _pages,
62 ),
63 ),
64 ),
65 );
66 }
67}
68
69class KeepAlivePage extends StatefulWidget {
70 final Widget child;
71
73 super.key,
74 required this.child,
75 });
76
77 @override
78 State<KeepAlivePage> createState() => _KeepAlivePageState();
79}
80
81class _KeepAlivePageState extends State<KeepAlivePage>
82 with AutomaticKeepAliveClientMixin {
83 @override
84 Widget build(BuildContext context) {
85 super.build(context);
86 return widget.child;
87 }
88
89 @override
90 bool get wantKeepAlive => true;
91}
override State< KeepAlivePage > createState()
override State< OperationalDetailsScreen > createState()
const KeepAlivePage({ super.key, required this.child, })
const OperationalDetailsScreen({super.key})
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