From e1b5472003854329e5af376a4a5295ef8fbcde7f Mon Sep 17 00:00:00 2001 From: abdulraheemf <57996164+abdulraheemf@users.noreply.github.com> Date: Tue, 4 Apr 2023 11:41:17 +0300 Subject: [PATCH 1/4] fixed the scroll behaviour --- example/pubspec.lock | 94 +++++++++++++++++++----------- lib/src/table_calendar_base.dart | 2 +- lib/src/widgets/calendar_core.dart | 2 +- pubspec.lock | 91 +++++++++++++++++++---------- pubspec.yaml | 2 +- 5 files changed, 123 insertions(+), 68 deletions(-) diff --git a/example/pubspec.lock b/example/pubspec.lock index 40582f4c..1e4e856a 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,49 +5,56 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted version: "1.2.1" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: caac504f942f41dfadcf45229ce8c47065b93919a12739f20d6173a883c5ec73 + url: "https://pub.dev" source: hosted version: "1.0.2" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted version: "1.3.1" flutter: @@ -64,42 +71,56 @@ packages: dependency: transitive description: name: intl - url: "https://pub.dartlang.org" + sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + url: "https://pub.dev" source: hosted - version: "0.18.0" + version: "0.17.0" + js: + dependency: transitive + description: + name: js + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" + source: hosted + version: "0.6.5" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted version: "1.8.2" simple_gesture_detector: dependency: transitive description: name: simple_gesture_detector - url: "https://pub.dartlang.org" + sha256: "86d08f85f1f58583b7b4b941d989f48ea6ce08c1724a1d10954a277c2ec36592" + url: "https://pub.dev" source: hosted version: "0.2.0" sky_engine: @@ -111,30 +132,34 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" table_calendar: dependency: "direct main" description: @@ -146,23 +171,26 @@ packages: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.4.16" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" sdks: - dart: ">=2.17.0-0 <3.0.0" + dart: ">=2.18.0 <3.0.0" flutter: ">=1.17.0" diff --git a/lib/src/table_calendar_base.dart b/lib/src/table_calendar_base.dart index 659a43a7..aa519cda 100644 --- a/lib/src/table_calendar_base.dart +++ b/lib/src/table_calendar_base.dart @@ -209,7 +209,7 @@ class _TableCalendarBaseState extends State { constraints: constraints, pageController: _pageController, scrollPhysics: _canScrollHorizontally - ? PageScrollPhysics() + ? BouncingScrollPhysics() : NeverScrollableScrollPhysics(), firstDay: widget.firstDay, lastDay: widget.lastDay, diff --git a/lib/src/widgets/calendar_core.dart b/lib/src/widgets/calendar_core.dart index d196296f..4e4a5f0f 100644 --- a/lib/src/widgets/calendar_core.dart +++ b/lib/src/widgets/calendar_core.dart @@ -64,7 +64,7 @@ class CalendarCore extends StatelessWidget { Widget build(BuildContext context) { return PageView.builder( controller: pageController, - physics: scrollPhysics, + physics: BouncingScrollPhysics(), itemCount: _getPageCount(calendarFormat, firstDay, lastDay), itemBuilder: (context, index) { final baseDay = _getBaseDay(calendarFormat, index); diff --git a/pubspec.lock b/pubspec.lock index f13096b0..21d0419a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,42 +5,48 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted version: "1.2.1" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted version: "1.3.1" flutter: @@ -57,42 +63,56 @@ packages: dependency: "direct main" description: name: intl - url: "https://pub.dartlang.org" + sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + url: "https://pub.dev" source: hosted - version: "0.18.0" + version: "0.17.0" + js: + dependency: transitive + description: + name: js + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" + source: hosted + version: "0.6.5" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted version: "1.8.2" simple_gesture_detector: dependency: "direct main" description: name: simple_gesture_detector - url: "https://pub.dartlang.org" + sha256: "86d08f85f1f58583b7b4b941d989f48ea6ce08c1724a1d10954a277c2ec36592" + url: "https://pub.dev" source: hosted version: "0.2.0" sky_engine: @@ -104,51 +124,58 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.4.16" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" sdks: - dart: ">=2.17.0-0 <3.0.0" + dart: ">=2.18.0 <3.0.0" flutter: ">=1.17.0" diff --git a/pubspec.yaml b/pubspec.yaml index f87cfdc8..ffe612ac 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,7 +12,7 @@ dependencies: flutter: sdk: flutter - intl: ^0.18.0 + intl: ^0.17.0 simple_gesture_detector: ^0.2.0 dev_dependencies: From 9f9702f1645650b8ee501fb00768987c3ba5e02a Mon Sep 17 00:00:00 2001 From: abdulraheemf <57996164+abdulraheemf@users.noreply.github.com> Date: Tue, 4 Apr 2023 11:53:13 +0300 Subject: [PATCH 2/4] made Scroll Physics an option --- lib/src/table_calendar.dart | 5 +++++ lib/src/table_calendar_base.dart | 4 +++- lib/src/widgets/calendar_core.dart | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/src/table_calendar.dart b/lib/src/table_calendar.dart index bcd52656..dc850c67 100644 --- a/lib/src/table_calendar.dart +++ b/lib/src/table_calendar.dart @@ -177,6 +177,9 @@ class TableCalendar extends StatefulWidget { /// Called whenever a day range gets selected. final OnRangeSelected? onRangeSelected; + /// Scroll Physics for the calendar + final ScrollPhysics physics; + /// Called whenever any day gets tapped. final OnDaySelected? onDaySelected; @@ -214,6 +217,7 @@ class TableCalendar extends StatefulWidget { this.locale, this.rangeStartDay, this.rangeEndDay, + this.physics = const ScrollPhysics(), this.weekendDays = const [DateTime.saturday, DateTime.sunday], this.calendarFormat = CalendarFormat.month, this.availableCalendarFormats = const { @@ -509,6 +513,7 @@ class _TableCalendarState extends State> { _focusedDay.value = focusedDay; widget.onPageChanged?.call(focusedDay); }, + physics: widget.physics, weekNumbersVisible: widget.weekNumbersVisible, weekNumberBuilder: (BuildContext context, DateTime day) { final weekNumber = _calculateWeekNumber(day); diff --git a/lib/src/table_calendar_base.dart b/lib/src/table_calendar_base.dart index aa519cda..29c81fe5 100644 --- a/lib/src/table_calendar_base.dart +++ b/lib/src/table_calendar_base.dart @@ -36,10 +36,12 @@ class TableCalendarBase extends StatefulWidget { final SwipeCallback? onVerticalSwipe; final void Function(DateTime focusedDay)? onPageChanged; final void Function(PageController pageController)? onCalendarCreated; + final ScrollPhysics physics; TableCalendarBase({ Key? key, required this.firstDay, + required this.physics, required this.lastDay, required this.focusedDay, this.calendarFormat = CalendarFormat.month, @@ -209,7 +211,7 @@ class _TableCalendarBaseState extends State { constraints: constraints, pageController: _pageController, scrollPhysics: _canScrollHorizontally - ? BouncingScrollPhysics() + ? widget.physics : NeverScrollableScrollPhysics(), firstDay: widget.firstDay, lastDay: widget.lastDay, diff --git a/lib/src/widgets/calendar_core.dart b/lib/src/widgets/calendar_core.dart index 4e4a5f0f..d196296f 100644 --- a/lib/src/widgets/calendar_core.dart +++ b/lib/src/widgets/calendar_core.dart @@ -64,7 +64,7 @@ class CalendarCore extends StatelessWidget { Widget build(BuildContext context) { return PageView.builder( controller: pageController, - physics: BouncingScrollPhysics(), + physics: scrollPhysics, itemCount: _getPageCount(calendarFormat, firstDay, lastDay), itemBuilder: (context, index) { final baseDay = _getBaseDay(calendarFormat, index); From 4d0a5bd2d7d6e8a509cba999895b4801c660ba3f Mon Sep 17 00:00:00 2001 From: abdulraheemf <57996164+abdulraheemf@users.noreply.github.com> Date: Tue, 4 Apr 2023 11:58:56 +0300 Subject: [PATCH 3/4] Update table_calendar_base_test.dart --- test/table_calendar_base_test.dart | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/test/table_calendar_base_test.dart b/test/table_calendar_base_test.dart index 4076a540..488dc095 100644 --- a/test/table_calendar_base_test.dart +++ b/test/table_calendar_base_test.dart @@ -38,7 +38,7 @@ void main() { rowHeight: 52, dowVisible: false, calendarFormat: CalendarFormat.month, - startingDayOfWeek: StartingDayOfWeek.sunday, + startingDayOfWeek: StartingDayOfWeek.sunday, physics: BouncingScrollPhysics(), ), ), ); @@ -84,7 +84,7 @@ void main() { rowHeight: 52, dowVisible: false, calendarFormat: CalendarFormat.twoWeeks, - startingDayOfWeek: StartingDayOfWeek.sunday, + startingDayOfWeek: StartingDayOfWeek.sunday, physics: ClampingScrollPhysics(), ), ), ); @@ -130,7 +130,7 @@ void main() { rowHeight: 52, dowVisible: false, calendarFormat: CalendarFormat.week, - startingDayOfWeek: StartingDayOfWeek.sunday, + startingDayOfWeek: StartingDayOfWeek.sunday,physics: BouncingScrollPhysics(), ), ), ); @@ -176,7 +176,7 @@ void main() { rowHeight: 52, dowVisible: false, calendarFormat: CalendarFormat.month, - startingDayOfWeek: StartingDayOfWeek.monday, + startingDayOfWeek: StartingDayOfWeek.monday,physics: BouncingScrollPhysics(), ), ), ); @@ -222,7 +222,7 @@ void main() { rowHeight: 52, dowVisible: false, calendarFormat: CalendarFormat.twoWeeks, - startingDayOfWeek: StartingDayOfWeek.monday, + startingDayOfWeek: StartingDayOfWeek.monday, physics: BouncingScrollPhysics(), ), ), ); @@ -268,7 +268,7 @@ void main() { rowHeight: 52, dowVisible: false, calendarFormat: CalendarFormat.week, - startingDayOfWeek: StartingDayOfWeek.monday, + startingDayOfWeek: StartingDayOfWeek.monday, physics: BouncingScrollPhysics(), ), ), ); @@ -327,6 +327,7 @@ void main() { }, rowHeight: 52, dowVisible: false, + physics: BouncingScrollPhysics(), ), ), ); @@ -372,6 +373,7 @@ void main() { dowBuilder: (context, day) { return Text('${day.weekday}'); }, + physics: BouncingScrollPhysics(), ), ), ); From d9bc8e459828b8cc1bda2dd14f2eab29907092d5 Mon Sep 17 00:00:00 2001 From: abdulraheemf <57996164+abdulraheemf@users.noreply.github.com> Date: Tue, 4 Apr 2023 12:03:04 +0300 Subject: [PATCH 4/4] Update pubspec.yaml --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index ffe612ac..f87cfdc8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,7 +12,7 @@ dependencies: flutter: sdk: flutter - intl: ^0.17.0 + intl: ^0.18.0 simple_gesture_detector: ^0.2.0 dev_dependencies: