diff --git a/README.md b/README.md index 723c199..236ce1c 100644 --- a/README.md +++ b/README.md @@ -49,3 +49,24 @@ You can use custom colors and labels by the optional parameters: - `weeknumberColor` Color of the weekday container - `weeknumberTextColor` Color of the weekday text - `daysInWeek` Specifies the number of weekdays to render, default is 7, so Monday to Sunday + +## ~~How to make it scrollable on desktop~~ + +1- Create a class, extend it from MaterialScrollBeavior, and override dragDevices: +```dart +class AppScrollBehavior extends MaterialScrollBehavior { + @override + Set get dragDevices => { + PointerDeviceKind.touch, + PointerDeviceKind.mouse, + PointerDeviceKind.trackpad, + }; +} +``` +2- Pass an AppScrollBehavior instance to scrollBehavior property of MaterialApp: +```dart +MaterialApp( +scrollBehavior: AppScrollBehavior(), +... +); +``` diff --git a/lib/weekly_date_picker.dart b/lib/weekly_date_picker.dart index 6b547e7..cd85ad2 100644 --- a/lib/weekly_date_picker.dart +++ b/lib/weekly_date_picker.dart @@ -1,9 +1,19 @@ library weekly_date_picker; +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:week_of_year/week_of_year.dart'; import "package:weekly_date_picker/datetime_apis.dart"; +class PickerScrollBehavior extends MaterialScrollBehavior { + @override + Set get dragDevices => { + PointerDeviceKind.touch, + PointerDeviceKind.mouse, + PointerDeviceKind.trackpad, + }; +} + class WeeklyDatePicker extends StatefulWidget { WeeklyDatePicker({ Key? key, @@ -114,20 +124,23 @@ class _WeeklyDatePickerState extends State { ) : Container(), Expanded( - child: PageView.builder( - controller: _controller, - onPageChanged: (int index) { - setState(() { - _weeknumberInSwipe = _initialSelectedDay - .addDays(7 * (index - _weekIndexOffset)) - .weekOfYear; - }); - }, - scrollDirection: Axis.horizontal, - itemBuilder: (_, weekIndex) => Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - crossAxisAlignment: CrossAxisAlignment.center, - children: _weekdays(weekIndex - _weekIndexOffset), + child: ScrollConfiguration( + behavior: PickerScrollBehavior(), + child: PageView.builder( + controller: _controller, + onPageChanged: (int index) { + setState(() { + _weeknumberInSwipe = _initialSelectedDay + .addDays(7 * (index - _weekIndexOffset)) + .weekOfYear; + }); + }, + scrollDirection: Axis.horizontal, + itemBuilder: (_, weekIndex) => Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.center, + children: _weekdays(weekIndex - _weekIndexOffset), + ), ), ), ),