@@ -11,10 +11,10 @@ import '../calendar_view/calendar_view.dart';
1111// part 'junky_logic.dart';
1212// part 'range_selector_logic.dart';
1313
14- typedef BottomBarSelectorBuilder = Widget Function (
15- CalendarViewController logic,
16- BuildContext context,
17- );
14+ typedef ControllerCreationCallBack = void Function (
15+ CalendarViewController controller);
16+
17+ typedef OnCalendarUpdate = void Function ( int month, int year );
1818
1919class DateSelector extends StatefulWidget {
2020 final double width;
@@ -23,16 +23,20 @@ class DateSelector extends StatefulWidget {
2323 final Color dividerColor;
2424 final TextStyle ? headerTextStyle;
2525 final CalendarColorScheme ? colorScheme;
26- final BottomBarSelectorBuilder ? bottomBar;
26+ final Widget ? bottomBar;
27+ final CalendarViewController controller;
28+ final OnCalendarUpdate ? onCalendarUpdate;
2729 const DateSelector ({
2830 super .key,
31+ required this .controller,
2932 this .width = 250 ,
3033 this .padding,
3134 this .crossAxisPadding = 12 ,
3235 this .dividerColor = Colors .grey,
3336 this .headerTextStyle,
3437 this .colorScheme,
3538 this .bottomBar,
39+ this .onCalendarUpdate,
3640 });
3741
3842 @override
@@ -44,10 +48,10 @@ class _DateSelectorState extends State<DateSelector> {
4448 late double calendarViewWidth;
4549
4650 // final RangeSelectorLogic logic = RangeSelectorLogic();
47- final CalendarViewController controller = CalendarViewController (
48- id: "data_selector" ,
49- enableRangeSelectionMode: false ,
50- );
51+ // final CalendarViewController controller = CalendarViewController(
52+ // id: "data_selector",
53+ // enableRangeSelectionMode: false,
54+ // );
5155
5256 late ValueNotifier <String > calendarNotifier;
5357
@@ -59,19 +63,25 @@ class _DateSelectorState extends State<DateSelector> {
5963 maxWidth = widget.width + widget.crossAxisPadding;
6064 calendarViewWidth = maxWidth - 40 ;
6165
62- calendarNotifier = ValueNotifier <String >(_format (controller.displayDate! ));
66+ calendarNotifier =
67+ ValueNotifier <String >(_format (widget.controller.displayDate! ));
68+
69+ // widget.onControllerCreated?.call(controller);
70+
6371 super .initState ();
6472 }
6573
6674 void _updateCalendarDateDisplay () {
67- calendarNotifier.value = _format (controller.displayDate! );
75+ calendarNotifier.value = _format (widget.controller.displayDate! );
76+ DateTime dateTime = widget.controller.displayDate! ;
77+ widget.onCalendarUpdate? .call (dateTime.month, dateTime.year);
6878 }
6979
7080 @override
7181 Widget build (BuildContext context) {
7282 return Container (
7383 decoration: BoxDecoration (
74- borderRadius: BorderRadius .circular (4 ),
84+ borderRadius: BorderRadius .circular (8 ),
7585 color: Colors .white,
7686 ),
7787 padding: widget.padding,
@@ -81,22 +91,21 @@ class _DateSelectorState extends State<DateSelector> {
8191 crossAxisAlignment: CrossAxisAlignment .center,
8292 children: [
8393 _calendarControls (
84- controller: controller,
94+ controller: widget. controller,
8595 notifier: calendarNotifier,
8696 ),
8797 Divider (
8898 color: widget.dividerColor,
8999 height: 0 ,
90100 ),
91101 const SizedBox (height: 7 ),
92- _calendarView (controller),
102+ _calendarView (widget. controller),
93103 const SizedBox (height: 7 ),
94104 Divider (
95105 color: widget.dividerColor,
96106 height: 0 ,
97107 ),
98- if (widget.bottomBar != null )
99- widget.bottomBar! .call (controller, context),
108+ if (widget.bottomBar != null ) widget.bottomBar!
100109 ],
101110 ),
102111 );
0 commit comments