diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index 8d4492f..9625e10 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 11.0 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index e206171..ee5706d 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -272,7 +272,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -350,7 +350,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -399,7 +399,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/example/pubspec.lock b/example/pubspec.lock index f375b08..c47f500 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -7,7 +7,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.8.2" + version: "2.9.0" boolean_selector: dependency: transitive description: @@ -21,21 +21,14 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.2.1" clock: dependency: transitive description: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: @@ -56,7 +49,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -101,28 +94,28 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.11" + version: "0.12.12" material_color_utilities: dependency: transitive description: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.1.4" + version: "0.1.5" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.8.0" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.2" sky_engine: dependency: transitive description: flutter @@ -134,7 +127,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.2" + version: "1.9.0" stack_trace: dependency: transitive description: @@ -155,21 +148,21 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.9" + version: "0.4.12" vector_math: dependency: transitive description: diff --git a/lib/src/date_time_picker.dart b/lib/src/date_time_picker.dart index 9286abf..0c8be82 100644 --- a/lib/src/date_time_picker.dart +++ b/lib/src/date_time_picker.dart @@ -113,7 +113,7 @@ import 'package:intl/date_symbol_data_local.dart'; class DateTimePicker extends StatefulWidget { DateTimePicker({ required this.child, - this.weekDateBoxSize = 12, + this.weekDateBoxSize = 35, this.monthDateBoxSize = 45, this.header, this.onTapDay, @@ -139,8 +139,8 @@ class DateTimePicker extends StatefulWidget { final bool pickTime; final double? dateBoxSize; final DateBoxShape dateBoxShape; - final double? weekDateBoxSize; - final double? monthDateBoxSize; + final double weekDateBoxSize; + final double monthDateBoxSize; final DateTime? initialDate; final List? markedDates; final List? disabledDates; @@ -153,6 +153,9 @@ class DateTimePicker extends StatefulWidget { class _DateTimePickerState extends State { late DateTimePickerController _dateTimePickerController; + final DraggableScrollableController _dragController = + DraggableScrollableController(); + @override void initState() { super.initState(); @@ -182,6 +185,7 @@ class _DateTimePickerState extends State { @override void dispose() { _dateTimePickerController.dispose(); + _dragController.dispose(); super.dispose(); } @@ -193,12 +197,14 @@ class _DateTimePickerState extends State { RotatedBox( quarterTurns: 2, child: DraggableScrollableSheet( - controller: _dateTimePickerController.getDragController(), + controller: _dragController, snap: true, - minChildSize: 0.26, - initialChildSize: 0.26, + minChildSize: 0.2, + initialChildSize: 0.2, maxChildSize: 0.68, builder: (context, scrollController) { + double dragSize = + _dragController.isAttached ? _dragController.size : 0; return RotatedBox( quarterTurns: 2, child: Stack( @@ -223,20 +229,16 @@ class _DateTimePickerState extends State { ), ], ), - child: _dateTimePickerController - .getDragController() - .size < - 0.3 + child: dragSize < 0.3 ? WeekDateTimePickerSheet( dateTimePickerController: _dateTimePickerController, - weekDateBoxSize: widget.weekDateBoxSize ?? 12, + weekDateBoxSize: widget.weekDateBoxSize, ) : MonthDateTimePickerSheet( dateTimePickerController: _dateTimePickerController, - monthDateBoxSize: - widget.monthDateBoxSize ?? 45, + monthDateBoxSize: widget.monthDateBoxSize, ), ), ), diff --git a/lib/src/utils/date_time_picker_controller.dart b/lib/src/utils/date_time_picker_controller.dart index 188c705..8e45c83 100644 --- a/lib/src/utils/date_time_picker_controller.dart +++ b/lib/src/utils/date_time_picker_controller.dart @@ -17,8 +17,7 @@ class DateTimePickerController extends ChangeNotifier { required this.selectedDate, }); - final DraggableScrollableController _dragController = - DraggableScrollableController(); + final PageController _pageController = PageController(initialPage: 1); final bool highlightToday; @@ -41,7 +40,6 @@ class DateTimePickerController extends ChangeNotifier { @override void dispose() { _pageController.dispose(); - _dragController.dispose(); super.dispose(); } @@ -71,10 +69,6 @@ class DateTimePickerController extends ChangeNotifier { } } - DraggableScrollableController getDragController() { - return _dragController; - } - PageController getPageController() { return _pageController; } diff --git a/lib/src/widgets/month_date_time_picker.dart/month_date_time_picker.dart b/lib/src/widgets/month_date_time_picker.dart/month_date_time_picker.dart index b221002..aea0bec 100644 --- a/lib/src/widgets/month_date_time_picker.dart/month_date_time_picker.dart +++ b/lib/src/widgets/month_date_time_picker.dart/month_date_time_picker.dart @@ -106,8 +106,8 @@ class MonthDateTimePicker extends StatelessWidget { borderRadius: _determineBorderRadius(dateTimePickerController), ), - height: 45, - width: 45, + height: monthDateBoxSize, + width: monthDateBoxSize, child: Stack( children: [ Center( diff --git a/lib/src/widgets/month_date_time_picker.dart/month_date_time_picker_sheet.dart b/lib/src/widgets/month_date_time_picker.dart/month_date_time_picker_sheet.dart index 0d09b9e..5c18918 100644 --- a/lib/src/widgets/month_date_time_picker.dart/month_date_time_picker_sheet.dart +++ b/lib/src/widgets/month_date_time_picker.dart/month_date_time_picker_sheet.dart @@ -37,7 +37,7 @@ class MonthDateTimePickerSheet extends StatelessWidget { ), SizedBox( width: MediaQuery.of(context).size.width, - height: 300, + height: MediaQuery.of(context).size.height * 0.33, child: PageView( controller: dateTimePickerController.getPageController(), onPageChanged: (i) { @@ -70,7 +70,7 @@ class MonthDateTimePickerSheet extends StatelessWidget { dateTimePickerController.browsingDate.year - 1, 12, 1) : DateTime(dateTimePickerController.browsingDate.year, dateTimePickerController.browsingDate.month - 1, 1), - monthDateBoxSize: monthDateBoxSize, + monthDateBoxSize: monthDateBoxSize, dateTimePickerController: dateTimePickerController), MonthDateTimePicker( date: DateTime( @@ -81,17 +81,16 @@ class MonthDateTimePickerSheet extends StatelessWidget { dateTimePickerController: dateTimePickerController, monthDateBoxSize: monthDateBoxSize), MonthDateTimePicker( - date: dateTimePickerController.browsingDate.month == 12 - ? DateTime( - dateTimePickerController.browsingDate.year + 1, - 1, - 1, - ) - : DateTime(dateTimePickerController.browsingDate.year, - dateTimePickerController.browsingDate.month + 1, 1), - dateTimePickerController: dateTimePickerController, - monthDateBoxSize: monthDateBoxSize - ), + date: dateTimePickerController.browsingDate.month == 12 + ? DateTime( + dateTimePickerController.browsingDate.year + 1, + 1, + 1, + ) + : DateTime(dateTimePickerController.browsingDate.year, + dateTimePickerController.browsingDate.month + 1, 1), + dateTimePickerController: dateTimePickerController, + monthDateBoxSize: monthDateBoxSize), ], ), ), diff --git a/lib/src/widgets/week_date_time_picker/week_date_time_picker.dart b/lib/src/widgets/week_date_time_picker/week_date_time_picker.dart index 793980f..f186cce 100644 --- a/lib/src/widgets/week_date_time_picker/week_date_time_picker.dart +++ b/lib/src/widgets/week_date_time_picker/week_date_time_picker.dart @@ -91,7 +91,10 @@ class WeekDateTimePicker extends StatelessWidget { ); }); } else { - timeOfDay = TimeOfDay(hour: 0, minute: 0); + timeOfDay = TimeOfDay( + hour: 0, + minute: 0, + ); } DateTime selectedDateTime = DateTime( @@ -120,8 +123,8 @@ class WeekDateTimePicker extends StatelessWidget { ), const Spacer(), Container( - height: 35, - width: 35, + height: weekDateBoxSize, + width: weekDateBoxSize, decoration: BoxDecoration( color: calendarColors['backgroundColor'], borderRadius: @@ -142,8 +145,8 @@ class WeekDateTimePicker extends StatelessWidget { Align( alignment: Alignment.bottomRight, child: Container( - width: weekDateBoxSize, - height: weekDateBoxSize, + width: weekDateBoxSize / 3, + height: weekDateBoxSize / 3, decoration: BoxDecoration( color: Theme.of(context).indicatorColor, borderRadius: @@ -235,7 +238,7 @@ class WeekDateTimePicker extends StatelessWidget { case DateBoxShape.rectangle: return BorderRadius.zero; case DateBoxShape.roundedRectangle: - return BorderRadius.circular(weekDateBoxSize / 1.5); + return BorderRadius.circular(weekDateBoxSize / 4.5); } } }