1+ import 'package:flutter/foundation.dart' ;
12import 'package:flutter/material.dart' ;
23import 'package:flutter_riverpod/flutter_riverpod.dart' ;
34import 'package:go_router/go_router.dart' ;
@@ -11,7 +12,7 @@ import 'package:illemo/src/routing/app_router.dart';
1112import 'package:illemo/src/utils/date.dart' ;
1213import 'package:illemo/src/utils/pluralize.dart' ;
1314
14- class CalendarScreen extends ConsumerWidget {
15+ class CalendarScreen extends ConsumerStatefulWidget {
1516 const CalendarScreen ({super .key, this .date});
1617
1718 static const path = "/calendar" ;
@@ -20,14 +21,36 @@ class CalendarScreen extends ConsumerWidget {
2021 final DateTime ? date;
2122
2223 @override
23- Widget build (BuildContext context, WidgetRef ref) {
24+ ConsumerState <CalendarScreen > createState () => _CalendarScreenState ();
25+ }
26+
27+ class _CalendarScreenState extends ConsumerState <CalendarScreen > {
28+ late final PageController _pageController;
29+ final today = DateTime (DateTime .now ().year, DateTime .now ().month, DateTime .now ().day);
30+
31+ @override
32+ void dispose () {
33+ _pageController.dispose ();
34+ super .dispose ();
35+ }
36+
37+ @override
38+ void initState () {
39+ super .initState ();
40+ final currentDate = widget.date ?? today;
41+ _pageController = PageController (
42+ initialPage: (today.year - currentDate.year) * 12 + today.month - currentDate.month,
43+ );
44+ }
45+
46+ @override
47+ Widget build (BuildContext context) {
2448 /// The default date to show the calendar for.
25- final today = DateTime (DateTime .now ().year, DateTime .now ().month, DateTime .now ().day);
26- final currentDate = date ?? today;
49+ final currentDate = widget.date ?? today;
2750 return Scaffold (
2851 resizeToAvoidBottomInset: false ,
2952 appBar: AppBar (
30- title: const Text (title),
53+ title: const Text (CalendarScreen . title),
3154 actions: [
3255 IconButton (
3356 icon: const Icon (Icons .calendar_today),
@@ -50,8 +73,7 @@ class CalendarScreen extends ConsumerWidget {
5073 ),
5174 body: PageView .builder (
5275 reverse: true ,
53- controller: PageController (
54- initialPage: (today.year - currentDate.year) * 12 + today.month - currentDate.month),
76+ controller: _pageController,
5577 itemBuilder: (BuildContext context, int index) {
5678 final targetDate = DateTime (
5779 today.year,
0 commit comments