From cf29be6a49e17bd9de2c9d019f1cb4b671671b40 Mon Sep 17 00:00:00 2001 From: dudv Date: Wed, 12 Oct 2022 09:48:41 +0700 Subject: [PATCH 1/2] add weekend day --- .../ios/Flutter/flutter_export_environment.sh | 13 +++++++ example/pubspec.lock | 2 +- lib/src/basic_day_based_widget.dart | 6 +++- lib/src/day_based_changable_picker.dart | 11 +++++- lib/src/i_selectable_picker.dart | 4 ++- lib/src/range_picker.dart | 1 - lib/src/styles/date_picker_styles.dart | 4 +++ lib/src/week_picker.dart | 1 - pubspec.lock | 34 +++++++++---------- test/day_selectable_test.dart | 2 +- test/range_selectable_test.dart | 5 +-- 11 files changed, 57 insertions(+), 26 deletions(-) create mode 100755 example/ios/Flutter/flutter_export_environment.sh diff --git a/example/ios/Flutter/flutter_export_environment.sh b/example/ios/Flutter/flutter_export_environment.sh new file mode 100755 index 0000000..4b2c57d --- /dev/null +++ b/example/ios/Flutter/flutter_export_environment.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# This is a generated file; do not edit or check into version control. +export "FLUTTER_ROOT=/Users/apple/SDK/flutter" +export "FLUTTER_APPLICATION_PATH=/Volumes/HDD_MAC/PRO/flutter_date_pickers/example" +export "COCOAPODS_PARALLEL_CODE_SIGN=true" +export "FLUTTER_TARGET=lib/main.dart" +export "FLUTTER_BUILD_DIR=build" +export "FLUTTER_BUILD_NAME=1.0.0" +export "FLUTTER_BUILD_NUMBER=1" +export "DART_OBFUSCATION=false" +export "TRACK_WIDGET_CREATION=false" +export "TREE_SHAKE_ICONS=false" +export "PACKAGE_CONFIG=.dart_tool/package_config.json" diff --git a/example/pubspec.lock b/example/pubspec.lock index a7c4b91..62987c8 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -68,7 +68,7 @@ packages: path: ".." relative: true source: path - version: "0.3.0" + version: "0.4.0" flutter_localizations: dependency: "direct main" description: flutter diff --git a/lib/src/basic_day_based_widget.dart b/lib/src/basic_day_based_widget.dart index 5576c48..40498bd 100644 --- a/lib/src/basic_day_based_widget.dart +++ b/lib/src/basic_day_based_widget.dart @@ -300,7 +300,11 @@ class _DayCell extends StatelessWidget { } else if (DatePickerUtils.sameDate(currentDate, day)) { itemStyle = datePickerStyles.currentDateStyle; } else { - itemStyle = datePickerStyles.defaultDateTextStyle; + if (day.weekday == 6 || day.weekday == 7) { + itemStyle = datePickerStyles.weekendDateStyle; + } else { + itemStyle = datePickerStyles.defaultDateTextStyle; + } } // Merges decoration and textStyle with [EventDecoration]. diff --git a/lib/src/day_based_changable_picker.dart b/lib/src/day_based_changable_picker.dart index 631f82b..d240b26 100644 --- a/lib/src/day_based_changable_picker.dart +++ b/lib/src/day_based_changable_picker.dart @@ -234,7 +234,7 @@ class _DayBasedChangeablePickerState onNextMonthTapped: state.isLastMonth ? null : _presenter.gotoNextMonth, title: Text( - state.curMonthDis, + state.curMonthDis.capitalize(), key: widget.datePickerKeys?.selectedPeriodKeys, style: _resultStyles.displayedPeriodTitle, ), @@ -377,3 +377,12 @@ DateTime _getInitiallyShownDate( /// non-nullable can still be used with `!` and `?` /// to support older versions of the API as well. T? _ambiguate(T? value) => value; + + +// ignore: public_member_api_docs +extension StringExtension on String { + // ignore: prefer_expression_function_bodies, public_member_api_docs + String capitalize() { + return "${this[0].toUpperCase()}${substring(1).toLowerCase()}"; + } +} \ No newline at end of file diff --git a/lib/src/i_selectable_picker.dart b/lib/src/i_selectable_picker.dart index 2fabb2c..d81dc33 100644 --- a/lib/src/i_selectable_picker.dart +++ b/lib/src/i_selectable_picker.dart @@ -66,7 +66,9 @@ abstract class ISelectablePicker { /// If [_selectableDayPredicate] is set checks it as well. @protected bool isDisabled(DateTime day) => - day.isAfter(lastDate) || day.isBefore(firstDate) || !_selectableDayPredicate(day); + day.isAfter(lastDate) || + day.isBefore(firstDate) || + !_selectableDayPredicate(day); /// Closes [onUpdateController]. /// After it [onUpdateController] can't get new events. diff --git a/lib/src/range_picker.dart b/lib/src/range_picker.dart index 10d2429..65b4547 100644 --- a/lib/src/range_picker.dart +++ b/lib/src/range_picker.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; import 'date_period.dart'; import 'date_picker_keys.dart'; diff --git a/lib/src/styles/date_picker_styles.dart b/lib/src/styles/date_picker_styles.dart index 41b6a37..b09064b 100644 --- a/lib/src/styles/date_picker_styles.dart +++ b/lib/src/styles/date_picker_styles.dart @@ -26,6 +26,9 @@ class DatePickerStyles { /// Style for the numbers of disabled dates. final TextStyle? disabledDateStyle; + /// Style for weekend date. + final TextStyle? weekendDateStyle; + /// Style for the number of selected date. final TextStyle? selectedDateStyle; @@ -73,6 +76,7 @@ class DatePickerStyles { {this.displayedPeriodTitle, this.currentDateStyle, this.disabledDateStyle, + this.weekendDateStyle, this.selectedDateStyle, this.selectedSingleDateDecoration, this.defaultDateTextStyle, diff --git a/lib/src/week_picker.dart b/lib/src/week_picker.dart index db25b79..d4cc88e 100644 --- a/lib/src/week_picker.dart +++ b/lib/src/week_picker.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; import 'date_period.dart'; import 'date_picker_keys.dart'; diff --git a/pubspec.lock b/pubspec.lock index 6bd166a..199d9e6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,7 +7,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.8.1" + version: "2.8.2" boolean_selector: dependency: transitive description: @@ -21,7 +21,7 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" charcode: dependency: transitive description: @@ -42,14 +42,14 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0" + version: "1.16.0" fake_async: dependency: transitive description: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" flutter: dependency: "direct main" description: flutter @@ -78,7 +78,14 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10" + version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.4" meta: dependency: transitive description: @@ -92,7 +99,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" sky_engine: dependency: transitive description: flutter @@ -104,7 +111,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.2" stack_trace: dependency: transitive description: @@ -139,20 +146,13 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" + version: "0.4.9" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.2" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=2.17.0-0 <3.0.0" diff --git a/test/day_selectable_test.dart b/test/day_selectable_test.dart index 200e324..bf991f5 100644 --- a/test/day_selectable_test.dart +++ b/test/day_selectable_test.dart @@ -41,7 +41,7 @@ void main() { // ignore: prefer_function_declarations_over_variables final selectablePredicate = - (DateTime d) => !DatePickerUtils.sameDate(d, disabledDate); + (d) => !DatePickerUtils.sameDate(d, disabledDate); final selectableLogic = DaySelectable(selectedDate, firstDate, lastDate, selectableDayPredicate: selectablePredicate); diff --git a/test/range_selectable_test.dart b/test/range_selectable_test.dart index 0e057f5..4a43c81 100644 --- a/test/range_selectable_test.dart +++ b/test/range_selectable_test.dart @@ -48,7 +48,8 @@ void main() { final middlePeriodDateType = selectableLogic.getDayType(date); expect(middlePeriodDateType, DayType.middle, reason: "Incorrect DayType for the date ${date.toString()} " - "in period ${startPeriod.toString()} - ${endPeriod.toString()}"); + "in period ${startPeriod.toString()} " + "- ${endPeriod.toString()}"); } }); }); @@ -78,4 +79,4 @@ void main() { expect(selectableLogic.firstDate, startOfTheFirstDate); expect(selectableLogic.lastDate, endOfTheLastDate); }); -} \ No newline at end of file +} From 2e64428543d76b6ecac4652c0454fc5807b5d27a Mon Sep 17 00:00:00 2001 From: dudv Date: Wed, 12 Oct 2022 10:02:12 +0700 Subject: [PATCH 2/2] f --- lib/src/styles/date_picker_styles.dart | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/src/styles/date_picker_styles.dart b/lib/src/styles/date_picker_styles.dart index b09064b..363f104 100644 --- a/lib/src/styles/date_picker_styles.dart +++ b/lib/src/styles/date_picker_styles.dart @@ -110,6 +110,8 @@ class DatePickerStyles { theme.textTheme.bodyText1?.copyWith(color: theme.colorScheme.secondary); TextStyle? _disabledDateStyle = disabledDateStyle ?? theme.textTheme.bodyText2?.copyWith(color: theme.disabledColor); + TextStyle? _weekendDateStyle = weekendDateStyle ?? + theme.textTheme.bodyText2?.copyWith(color: theme.disabledColor); TextStyle? _selectedDateStyle = selectedDateStyle ?? theme.textTheme.bodyText1?.copyWith( color: theme.colorScheme.onSecondary, @@ -129,6 +131,7 @@ class DatePickerStyles { } return DatePickerStyles( + weekendDateStyle: _weekendDateStyle, disabledDateStyle: _disabledDateStyle, currentDateStyle: _currentDateStyle, displayedPeriodTitle: _displayedPeriodTitle, @@ -286,6 +289,7 @@ class DatePickerRangeStyles extends DatePickerStyles { selectedPeriodStartTextStyle: _selectedPeriodStartTextStyle, selectedPeriodMiddleTextStyle: _selectedPeriodMiddleTextStyle, selectedPeriodEndTextStyle: _selectedPeriodEndTextStyle, + weekendDateStyle: commonStyles.weekendDateStyle, ); } @@ -293,6 +297,7 @@ class DatePickerRangeStyles extends DatePickerStyles { /// [WeekPicker]). DatePickerRangeStyles({ TextStyle? displayedPeriodTitle, + TextStyle? weekendDateStyle, TextStyle? currentDateStyle, TextStyle? disabledDateStyle, TextStyle? selectedDateStyle, @@ -322,6 +327,7 @@ class DatePickerRangeStyles extends DatePickerStyles { dayHeaderTitleBuilder: dayHeaderTitleBuilder, nextIcon: nextIcon, prevIcon: prevIcon, + weekendDateStyle: weekendDateStyle, firstDayOfeWeekIndex: firstDayOfWeekIndex); @override @@ -348,7 +354,8 @@ class DatePickerRangeStyles extends DatePickerStyles { other.dayHeaderTitleBuilder == dayHeaderTitleBuilder && other.prevIcon == prevIcon && other.nextIcon == nextIcon && - other.firstDayOfeWeekIndex == firstDayOfeWeekIndex; + other.firstDayOfeWeekIndex == firstDayOfeWeekIndex && + other.weekendDateStyle == weekendDateStyle; } @override @@ -362,6 +369,7 @@ class DatePickerRangeStyles extends DatePickerStyles { displayedPeriodTitle, currentDateStyle, disabledDateStyle, + weekendDateStyle, selectedDateStyle, defaultDateTextStyle, selectedSingleDateDecoration,