From 7075bd67deebf225be8358144b70a952ca067a94 Mon Sep 17 00:00:00 2001 From: HarshaMidadhalaKhajareddyMidadhala Date: Mon, 20 Jul 2026 19:46:26 +0530 Subject: [PATCH 1/2] Updated date picker UG content --- Flutter/DateRangePicker/Callbacks.md | 87 ++-- Flutter/DateRangePicker/accessibility.md | 34 +- Flutter/DateRangePicker/builders.md | 133 +++-- Flutter/DateRangePicker/customizations.md | 213 +++++--- Flutter/DateRangePicker/date-navigations.md | 481 +++++++++++++----- Flutter/DateRangePicker/date-restrictions.md | 134 +++-- Flutter/DateRangePicker/getting-started.md | 223 +++++--- Flutter/DateRangePicker/headers.md | 141 +++-- Flutter/DateRangePicker/hijri-date-picker.md | 370 +++++++++++--- .../how-to/custom-widget-on-flutterflow.md | 17 +- .../Adding-code-snippent.png | Bin 86423 -> 0 bytes .../programmatic-range selection.png | Bin 28379 -> 0 bytes Flutter/DateRangePicker/localization.md | 43 +- Flutter/DateRangePicker/overview.md | 40 +- Flutter/DateRangePicker/right-to-left.md | 70 +-- Flutter/DateRangePicker/selections.md | 224 ++++++-- Flutter/DateRangePicker/views.md | 194 +++++-- 17 files changed, 1699 insertions(+), 705 deletions(-) delete mode 100644 Flutter/DateRangePicker/how-to/how-to-section-images/Adding-code-snippent.png delete mode 100644 Flutter/DateRangePicker/images/date-navigations/programmatic-range selection.png diff --git a/Flutter/DateRangePicker/Callbacks.md b/Flutter/DateRangePicker/Callbacks.md index 9b81946d3..7a2977833 100644 --- a/Flutter/DateRangePicker/Callbacks.md +++ b/Flutter/DateRangePicker/Callbacks.md @@ -2,35 +2,48 @@ layout: post title: Callbacks in Flutter Date Range Picker widget | Syncfusion description: Learn here all about Callbacks of Syncfusion Flutter Date Range Picker (SfDateRangePicker) widget and more. -platform: Flutter +platform: flutter control: SfDateRangePicker documentation: ug --- # Callbacks in Flutter Date Range Picker (SfDateRangePicker) -Calendar supports the [ViewChangedCallback](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerViewChangedCallback.html) and [SelectionChangedCallback](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionChangedCallback.html) to interact with the Flutter date range picker. +The date range picker supports the [ViewChangedCallback](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerViewChangedCallback.html) and [SelectionChangedCallback](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionChangedCallback.html) to interact with the Flutter date range picker. ## View changed callback -The [onViewChanged](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onViewChanged.html) callback triggers when the current view swiped to previous or next view, picker view switched to another picker view. +The [onViewChanged](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onViewChanged.html) callback is triggered when the current view is swiped to the previous or next view, or when the picker view is switched to another picker view. * [visibleDateRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerViewChangedArgs/visibleDateRange.html) - returns the start and end dates of the current visible month. {% tabs %} -{% highlight dart hl_lines="6 7 8" %} +{% highlight dart hl_lines="15 16 17" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - onViewChanged: (DateRangePickerViewChangedArgs args) { - var visibleDates = args.visibleDateRange; - }, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + onViewChanged: (DateRangePickerViewChangedArgs args) { + final DateTime? visibleDateRange = args.visibleDateRange.startDate; + }, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -40,31 +53,47 @@ The [onViewChanged](https://pub.dev/documentation/syncfusion_flutter_datepicker/ ## Selection changed callback -The [onSelectionChanged](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onSelectionChanged.html) callback triggers when selecting the dates from the date picker. +The [onSelectionChanged](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onSelectionChanged.html) callback is triggered when dates are selected from the date range picker. -* `args.value` - returns the dates based on the selection mode. +* `args.value` - Returns the selected value based on the selection mode: `DateTime` for single selection, `List` for multiple selection, `PickerDateRange` for range selection, and `List` for multi-range selection. {% tabs %} -{% highlight dart hl_lines="7 8 9 10 11 12 13 14 15 16 17 18" %} +{% highlight dart hl_lines="16 17 18 19 20 21 22 23 24 25 26 27" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.range, - onSelectionChanged: (DateRangePickerSelectionChangedArgs args) { - if (args.value is PickerDateRange) { - final DateTime rangeStartDate = args.value.startDate; - final DateTime rangeEndDate = args.value.endDate; - } else if (args.value is DateTime) { - final DateTime selectedDate = args.value; - } else if (args.value is List) { - final List selectedDates = args.value; - } else { - final List selectedRanges = args.value; - } - }, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.range, + onSelectionChanged: (DateRangePickerSelectionChangedArgs args) { + if (args.value is PickerDateRange) { + final DateTime? rangeStartDate = args.value.startDate; + final DateTime? rangeEndDate = args.value.endDate; + // Use the range values as needed. + } else if (args.value is DateTime) { + final DateTime selectedDate = args.value; + // Use the selected date value as needed. + } else if (args.value is List) { + final List selectedDates = args.value; + // Use the selected dates list as needed. + } else { + final List selectedRanges = args.value; + // Use the selected ranges list as needed. + } + }, + ), ), ); } diff --git a/Flutter/DateRangePicker/accessibility.md b/Flutter/DateRangePicker/accessibility.md index 4e0ae6cea..36c50c823 100644 --- a/Flutter/DateRangePicker/accessibility.md +++ b/Flutter/DateRangePicker/accessibility.md @@ -10,7 +10,7 @@ documentation: ug # Accessibility in Flutter DateRangePicker (SfDateRangePicker) ## Screen reader support -The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) can easily be accessed by screen readers. Please find the following table to get spoken feedback about the inner element contents of the screen. +The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) can easily be accessed by screen readers. The following table describes the spoken feedback for inner elements of the screen. ### Month view @@ -19,7 +19,7 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic | Month cell | EEE, dd/MMMM/yyyy | Thursday the 2nd of January 2020 | | Month header | MMMM yyyy | January 2020 | | View header | EEE | Monday | -| Disabled cells (Enable dates in past, dates exceed min/max dates) | EEE, dd/MMMM/yyyy, Disabled date | Friday, 31st January 2020, Disabled date | +| Disabled cells (dates in the past when enablePastDates is false, or dates beyond minDate/maxDate) | EEE, dd/MMMM/yyyy, Disabled date | Friday, 31st January 2020, Disabled date | | Blackout date | EEE, dd/MMMM/yyyy, blackout date | 6th February 2020, Blackout date | | Week number panel | Week, Week number | Week 26 | @@ -29,7 +29,7 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic |------------------------------------------------------------------|--------------------------|------------------------------| | Year cell | MMMM yyyy | January 2020 | | Header | yyyy | 2020 | -| Disabled cell (Enable dates in past, dates exceeds min/max date) | MMMM yyyy, Disabled cell | December 2019, Disabled cell | +| Disabled cell (dates in the past when enablePastDates is false, or dates exceed minDate/maxDate) | MMMM yyyy, Disabled cell | December 2019, Disabled cell | ### Decade view @@ -37,7 +37,7 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic |------------------------------------------------------------------|---------------------|--------------------| | Header | yyyy - yyyy | 2020 to 2029 | | Decade cell | yyyy | 2020 | -| Disabled cell (Enable dates in past, dates exceeds min/max date) | yyyy, Disabled cell | 2019 Disabled cell | +| Disabled cell (dates in the past when enablePastDates is false, or dates exceed minDate/maxDate) | yyyy, Disabled cell | 2019 Disabled cell | ### Century view @@ -45,7 +45,7 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic |------------------------------------------------------------------|-------------|-----------------------------| | Header | yyyy - yyyy | 2020 to 2029 | | Century cell | yyyy - yyyy | 2020 to 2029 | -| Disabled cell (Enable dates in past, dates exceeds min/max date) | yyyy - yyyy | 2010 to 2019, Disabled cell | +| Disabled cell (dates in the past when enablePastDates is false, or dates exceed minDate/maxDate) | yyyy - yyyy | 2010 to 2019, Disabled cell | ### Navigation arrows @@ -58,7 +58,7 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) [theming](https://help.syncfusion.com/flutter/themes) support offers a consistent and standardized look, as well as the ability to set the colors for all the UI elements. -The following APIs allows you to customize the colors of the following elements. +The following APIs allow you to customize the colors of the following elements. * [viewHeaderStyle](https://help.syncfusion.com/flutter/daterangepicker/headers#view-header) * [headerStyle](https://help.syncfusion.com/flutter/daterangepicker/headers#header-appearance) * [leadingDatesDecoration](https://help.syncfusion.com/flutter/daterangepicker/customizations#month-cell-customization) @@ -75,7 +75,7 @@ The following APIs allows you to customize the colors of the following elements. ## Large fonts -The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) font size can be adjusted automatically based on device settings and the font size scaled based on the [MediaQueryData.textScaleFactor](https://api.flutter.dev/flutter/widgets/MediaQueryData/textScaleFactor.html). It also allows you to change the font size of all elements in date range picker. +The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) font size can be adjusted automatically based on device settings and the font size scaled based on the [MediaQueryData.textScaler](https://api.flutter.dev/flutter/widgets/MediaQueryData/textScaler.html). It also allows you to change the font size of all elements in date range picker. * [todayTextStyle](https://help.syncfusion.com/flutter/daterangepicker/customizations) * [leadingDatesTextStyle](https://help.syncfusion.com/flutter/daterangepicker/customizations) * [trailingDatesTextStyle](https://help.syncfusion.com/flutter/daterangepicker/customizations) @@ -97,14 +97,14 @@ The following keyboard interactions are supported by the [SfDateRangePicker](htt | Down arrow | Selects the same day of the next week | | Right arrow | Selects the day after | | Left arrow | Selects the day before | -| Alt+1 | Displays month view | -| Alt+2 | Displays year view | -| Alt+3 | Displays decade view | -| Alt+4 | Displays century view | +| Alt + 1 | Displays month view | +| Alt + 2 | Displays year view | +| Alt + 3 | Displays decade view | +| Alt + 4 | Displays century view | | Tap | Focuses the next clickable element | -| Shift + upper arrow | Selects the same day in previous week to complete the range selection or add the day in the multiple selection | -| Shift + down arrow | Selects the same day in next week to complete the range selection or add the day in the multiple selection | -| Shift + left arrow | Selects the day before to complete the range selection or add the day in the multiple selection | -| Shift + right arrow | Selects the day after to complete the range selection or add the day in the multiple selection | -| Ctrl + left arrow | To navigate to the previous view | -| Ctrl + right arrow | To navigate to the next view | +| Shift + Up arrow | Selects the same day in previous week to complete the range selection or add the day in the multiple selection | +| Shift + Down arrow | Selects the same day in next week to complete the range selection or add the day in the multiple selection | +| Shift + Left arrow | Selects the day before to complete the range selection or add the day in the multiple selection | +| Shift + Right arrow | Selects the day after to complete the range selection or add the day in the multiple selection | +| Ctrl + Left arrow | To navigate to the previous view | +| Ctrl + Right arrow | To navigate to the next view | diff --git a/Flutter/DateRangePicker/builders.md b/Flutter/DateRangePicker/builders.md index 50a79102f..2604dd3c2 100644 --- a/Flutter/DateRangePicker/builders.md +++ b/Flutter/DateRangePicker/builders.md @@ -8,7 +8,7 @@ documentation: ug --- # Flutter Date Range Picker Builders (SfDateRangePicker) -The date range picker allows you to create a responsive UI with the conditions based on a widget’s details, and to design and create your custom view to the month cells and year cells in the date range picker. +The date range picker allows you to design custom views for month and year cells based on cell details. ## Cell builder @@ -16,69 +16,92 @@ The [DateRangePickerCellBuilder](https://pub.dev/documentation/syncfusion_flutte [DateRangePickerCellDetails](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerCellDetails-class.html): Returns the details of the cell. -* `date`: The date associate with the cell. +* `date`: The date associated with the cell. * `bound`: Returns the cell bounds. * `visibleDates`: The visible dates of the current view. {% tabs %} -{% highlight dart hl_lines="12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63" %} +{% highlight dart hl_lines="11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65" %} -class MyAppState extends State { - final DateRangePickerController _controller = DateRangePickerController(); +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, - home: Scaffold( - body: SafeArea( - child: SfDateRangePicker( - controller: _controller, - cellBuilder: ( - BuildContext context, - DateRangePickerCellDetails details, - ) { - final bool isToday = isSameDate(details.date, DateTime.now()); - final bool isBlackOut = isBlackedDate(details.date); - final bool isSpecialDate = isSpecialDay(details.date); - return Container( - margin: EdgeInsets.all(2), - padding: EdgeInsets.only(top: 10), - decoration: BoxDecoration( - color: Colors.blueAccent, - border: - isToday - ? Border.all(color: Colors.black, width: 2) - : null, - ), - child: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Text( - details.date.day.toString(), - style: TextStyle( - fontSize: 13, - fontWeight: FontWeight.bold, - ), + home: const PickerCellBuilder(), + ); + } +} + +class PickerCellBuilder extends StatefulWidget { + const PickerCellBuilder({super.key}); + + @override + State createState() => _PickerCellBuilderState(); +} + +class _PickerCellBuilderState extends State { + final DateRangePickerController _controller = DateRangePickerController(); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: SfDateRangePicker( + controller: _controller, + cellBuilder: ( + BuildContext context, + DateRangePickerCellDetails details, + ) { + final bool isToday = isSameDate(details.date, DateTime.now()); + final bool isBlackOut = isBlackoutDate(details.date); + final bool isSpecialDate = isSpecialDay(details.date); + return Container( + margin: const EdgeInsets.all(2), + padding: const EdgeInsets.only(top: 10), + decoration: BoxDecoration( + color: Colors.blueAccent, + border: + isToday + ? Border.all(color: Colors.black, width: 2) + : null, + ), + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text( + details.date.day.toString(), + style: const TextStyle( + fontSize: 13, + fontWeight: FontWeight.bold, ), - isBlackOut - ? Icon(Icons.block_sharp, size: 13) - : isSpecialDate - ? Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon(Icons.cake, size: 13), - Icon(Icons.celebration, size: 13), - Icon(Icons.audiotrack, size: 13), - ], - ) - : Container(), - ], - ), - ); - }, - ), + ), + isBlackOut + ? const Icon(Icons.block_sharp, size: 13) + : isSpecialDate + ? const Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.cake, size: 13), + Icon(Icons.celebration, size: 13), + Icon(Icons.audiotrack, size: 13), + ], + ) + : Container(), + ], + ), + ); + }, ), ), ); @@ -101,7 +124,7 @@ class MyAppState extends State { return false; } - bool isBlackedDate(DateTime date) { + bool isBlackoutDate(DateTime date) { if (date.day == 17 || date.day == 18) { return true; } @@ -114,7 +137,7 @@ class MyAppState extends State { ![Cell builder](images/builders/cell-builder.jpg) ->**NOTE** +>**NOTE** * Use [HijriDateRangePickerCellDetails](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDateRangePickerCellDetails-class.html) for the [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker-class.html). diff --git a/Flutter/DateRangePicker/customizations.md b/Flutter/DateRangePicker/customizations.md index e58c86e43..1ed931354 100644 --- a/Flutter/DateRangePicker/customizations.md +++ b/Flutter/DateRangePicker/customizations.md @@ -29,51 +29,64 @@ You can customize the calendar month view by using the [monthCellStyle](https:// * **Special Dates** – You can add special dates to the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using [specialDates](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/specialDates.html) property, and you can also customize the special dates text style and background by using the [specialDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/specialDatesTextStyle.html) and [specialDatesDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/specialDatesDecoration.html). -* **Weekend Dates** – You can change weekend dates to [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [weekendDays](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/weekendDays.html) property, and you can also customize the weekend dates text style and background by using the [weekendDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/weekendTextStyle.html) and [weekendDatesDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/weekendDatesDecoration.html). +* **Weekend Dates** – You can change weekend dates to [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [weekendDays](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/weekendDays.html) property, and you can also customize the weekend dates text style and background by using the [weekendTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/weekendTextStyle.html) and [weekendDatesDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/weekendDatesDecoration.html). {% tabs %} -{% highlight dart hl_lines="6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26" %} +{% highlight dart hl_lines="16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - monthViewSettings: DateRangePickerMonthViewSettings( - blackoutDates: [DateTime(2020, 03, 26)], - weekendDays: [7, 6], - specialDates: [ - DateTime(2020, 03, 20), - DateTime(2020, 03, 16), - DateTime(2020, 03, 17), - ], - showTrailingAndLeadingDates: true, - ), - monthCellStyle: DateRangePickerMonthCellStyle( - blackoutDatesDecoration: BoxDecoration( - color: Colors.red, - border: Border.all(color: const Color(0xFFF44436), width: 1), - shape: BoxShape.circle, - ), - weekendDatesDecoration: BoxDecoration( - color: const Color(0xFFDFDFDF), - border: Border.all(color: const Color(0xFFB6B6B6), width: 1), - shape: BoxShape.circle, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + monthViewSettings: const DateRangePickerMonthViewSettings( + blackoutDates: [DateTime(2020, 03, 26)], + weekendDays: [7, 6], + specialDates: [ + DateTime(2020, 03, 20), + DateTime(2020, 03, 16), + DateTime(2020, 03, 17), + ], + showTrailingAndLeadingDates: true, ), - specialDatesDecoration: BoxDecoration( - color: Colors.green, - border: Border.all(color: const Color(0xFF2B732F), width: 1), - shape: BoxShape.circle, + monthCellStyle: const DateRangePickerMonthCellStyle( + blackoutDatesDecoration: BoxDecoration( + color: Colors.red, + border: Border.all(color: Color(0xFFF44436), width: 1), + shape: BoxShape.circle, + ), + weekendDatesDecoration: BoxDecoration( + color: Color(0xFFDFDFDF), + border: Border.all(color: Color(0xFFB6B6B6), width: 1), + shape: BoxShape.circle, + ), + specialDatesDecoration: BoxDecoration( + color: Colors.green, + border: Border.all(color: Color(0xFF2B732F), width: 1), + shape: BoxShape.circle, + ), + blackoutDateTextStyle: TextStyle( + color: Colors.white, + decoration: TextDecoration.lineThrough, + ), + specialDatesTextStyle: TextStyle(color: Colors.white), ), - blackoutDateTextStyle: TextStyle( - color: Colors.white, - decoration: TextDecoration.lineThrough, - ), - specialDatesTextStyle: const TextStyle(color: Colors.white), ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -88,17 +101,30 @@ You can customize the calendar month view by using the [monthCellStyle](https:// You can customize the month format of the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) using the [monthFormat](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/monthFormat.html) property. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - monthFormat: 'MMM', + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + monthFormat: 'MMM', + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -107,34 +133,47 @@ You can customize the month format of the [SfDateRangePicker](https://pub.dev/do ## Selection cell customization -You can also customize the date range picker section by using the [monthCellStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/monthCellStyle.html) of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). +You can also customize the selection cells by using the [monthCellStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/monthCellStyle.html) of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). -* **Selection date text style** – Selected date text style can be customized using the [selectionTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionTextStyle.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) that is applicable for [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is [single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single) and [multiple](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiple), it is also applicable to start and end of the selected range text style in the [single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single) and [multiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange) selection. +* **Selection date text style** – Selected date text style can be customized using the [selectionTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionTextStyle.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) that is applicable for [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is [single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single) and [multiple](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiple), it is also applicable to start and end of the selected range text style in the [range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range) and [multiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange) selection. * **Selection color** – Selected date background color can be customized using the [selectionColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionColor.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) that is applicable for [single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single) and [multiple](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiple) selections. * **Range selection text style** – Range selection date text style can be customized using the [rangeTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/rangeTextStyle.html) property that is applicable when [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is [range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range) or [multiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange). -* **Range selection color** - Range selection color text style can be customized using the [startRangeSelectionColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/startRangeSelectionColor.html), [endRangeSelectionColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/endRangeSelectionColor.html) , [rangeSelectionColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/rangeSelectionColor.html) properties that is applicable when [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is in [range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range) or [multiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange). +* **Range selection color** – The range selection background color can be customized using the [startRangeSelectionColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/startRangeSelectionColor.html), [endRangeSelectionColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/endRangeSelectionColor.html) , [rangeSelectionColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/rangeSelectionColor.html) properties that is applicable when [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is in [range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range) or [multiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange). {% tabs %} -{% highlight dart hl_lines="7 8 9 10 11 12" %} +{% highlight dart hl_lines="16 17 18 19 20 21 25" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.range, - selectionTextStyle: const TextStyle(color: Colors.white), - selectionColor: Colors.blue, - startRangeSelectionColor: Colors.purple, - endRangeSelectionColor: Colors.purple, - rangeSelectionColor: Colors.purpleAccent, - rangeTextStyle: const TextStyle(color: Colors.white, fontSize: 20), + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.range, + selectionTextStyle: const TextStyle(color: Colors.white), + selectionColor: Colors.blue, + startRangeSelectionColor: Colors.purple, + endRangeSelectionColor: Colors.purple, + rangeSelectionColor: Colors.purpleAccent, + rangeTextStyle: const TextStyle(color: Colors.white, fontSize: 20), + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -145,47 +184,59 @@ You can also customize the date range picker section by using the [monthCellStyl You can customize the calendar `year`, `decade`, and `century` view by using the [yearCellStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/yearCellStyle.html) of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). -* **Current year** – You can customize the text style and background of the current year in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [textStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/textStyle.html) and [cellDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/cellDecoration.html) properties of [DateRangePickerYearCellStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle-class.html) +* **Current year** – You can customize the text style and background of the current year in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [textStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/textStyle.html) and [cellDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/cellDecoration.html) properties of [DateRangePickerYearCellStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle-class.html). -* **Disabled dates** – Disable dates text style and background of the [minDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/minDate.html) and [maxDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/maxDate.html) in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html), and the dates which are disabled by the [selectableDayPredicate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectableDayPredicate.html) callback are customized by using [disabledDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/disabledDatesTextStyle.html) and [disabledDatesDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/disabledDatesDecoration.html). +* **Disabled dates** – Disable dates text style and background of the [minDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/minDate.html) and [maxDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/maxDate.html) in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html), and the dates which are disabled by the [selectableDayPredicate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectableDayPredicate.html) callback are customized by using [disabledDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/disabledDatesTextStyle.html) and [disabledDatesDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/disabledDatesDecoration.html). -* **Leading dates** – You can also customize the text style and background of the leading month dates in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [leadingDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/leadingDatesTextStyle.html) and [leadingDatesDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/leadingDatesDecoration.html). +* **Leading dates** – You can also customize the text style and background of the leading year cells in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [leadingDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/leadingDatesTextStyle.html) and [leadingDatesDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/leadingDatesDecoration.html). -* **Today date** – You can customize the text style and background of the today's date in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [todayTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/todayTextStyle.html) and [todayCellDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthCellStyle/todayCellDecoration.html). +* **Today date** – You can customize the text style and background of the today's date in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [todayTextStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/todayTextStyle.html) and [todayCellDecoration](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerYearCellStyle/todayCellDecoration.html). {% tabs %} -{% highlight dart hl_lines="7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24" %} +{% highlight dart hl_lines="16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 40" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.range, - yearCellStyle: DateRangePickerYearCellStyle( - disabledDatesDecoration: BoxDecoration( - color: const Color(0xFFDFDFDF), - border: Border.all(color: const Color(0xFFB6B6B6), width: 1), - shape: BoxShape.circle, - ), - disabledDatesTextStyle: const TextStyle(color: Colors.black), - leadingDatesDecoration: BoxDecoration( - color: const Color(0xFFDFDFDF), - border: Border.all(color: const Color(0xFFB6B6B6), width: 1), - shape: BoxShape.circle, - ), - leadingDatesTextStyle: const TextStyle(color: Colors.black), - textStyle: const TextStyle(color: Colors.blue), - todayCellDecoration: BoxDecoration( - color: const Color(0xFFDFDFDF), - border: Border.all(color: const Color(0xFFB6B6B6), width: 1), - shape: BoxShape.circle, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.year, + yearCellStyle: const DateRangePickerYearCellStyle( + disabledDatesDecoration: BoxDecoration( + color: Color(0xFFDFDFDF), + border: Border.all(color: Color(0xFFB6B6B6), width: 1), + shape: BoxShape.circle, + ), + disabledDatesTextStyle: TextStyle(color: Colors.black), + leadingDatesDecoration: BoxDecoration( + color: Color(0xFFDFDFDF), + border: Border.all(color: Color(0xFFB6B6B6), width: 1), + shape: BoxShape.circle, + ), + leadingDatesTextStyle: TextStyle(color: Colors.black), + textStyle: TextStyle(color: Colors.blue), + todayCellDecoration: BoxDecoration( + color: Color(0xFFDFDFDF), + border: Border.all(color: Color(0xFFB6B6B6), width: 1), + shape: BoxShape.circle, + ), + todayTextStyle: TextStyle(color: Colors.purple), ), - todayTextStyle: const TextStyle(color: Colors.purple), ), ), ); } +} {% endhighlight %} {% endtabs %} diff --git a/Flutter/DateRangePicker/date-navigations.md b/Flutter/DateRangePicker/date-navigations.md index 3781de066..f79ec592d 100644 --- a/Flutter/DateRangePicker/date-navigations.md +++ b/Flutter/DateRangePicker/date-navigations.md @@ -2,7 +2,7 @@ layout: post title: Date Navigations in Flutter Date Range Picker widget | Syncfusion description: Learn here all about Date navigations feature of Syncfusion Flutter Date Range Picker (SfDateRangePicker) widget and more. -platform: Flutter +platform: flutter control: SfDateRangePicker documentation: ug --- @@ -11,28 +11,49 @@ documentation: ug ## Programmatic date navigation -You can programmatically navigate dates in the calendar widget by using the [displayDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/displayDate.html) property of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) +You can programmatically navigate to dates in the calendar widget by using the [displayDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/displayDate.html) property of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) {% tabs %} -{% highlight dart hl_lines="2 6 16" %} +{% highlight dart hl_lines="3 12 22" %} -class MyAppState extends State { - DateRangePickerController _datePickerController = DateRangePickerController(); +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override - initState() { + Widget build(BuildContext context) { + return MaterialApp( + home: _DisplayDateExample(), + ); + } +} + +class _DisplayDateExample extends StatefulWidget { + @override + State<_DisplayDateExample> createState() => _DisplayDateExampleState(); +} + +class _DisplayDateExampleState extends State<_DisplayDateExample> { + final DateRangePickerController _datePickerController = DateRangePickerController(); + + @override + void initState() { _datePickerController.displayDate = DateTime(2022, 02, 05); super.initState(); } @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - controller: _datePickerController, - ), + return Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + controller: _datePickerController, ), ); } @@ -45,26 +66,47 @@ class MyAppState extends State { ## Programmatic view navigation -You can programmatically navigate view in the calendar widget by using the [view](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/view.html) property of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html). +You can programmatically navigate the view in the calendar widget by using the [view](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/view.html) property of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html). {% tabs %} -{% highlight dart hl_lines="2 6 15" %} +{% highlight dart hl_lines="3 12 21" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} -class MyAppState extends State { - DateRangePickerController _datePickerController = DateRangePickerController(); +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override - initState() { + Widget build(BuildContext context) { + return MaterialApp( + home: _ViewNavigationExample(), + ); + } +} + +class _ViewNavigationExample extends StatefulWidget { + @override + State<_ViewNavigationExample> createState() => _ViewNavigationExampleState(); +} + +class _ViewNavigationExampleState extends State<_ViewNavigationExample> { + final DateRangePickerController _datePickerController = DateRangePickerController(); + + @override + void initState() { _datePickerController.view = DateRangePickerView.month; super.initState(); } @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfDateRangePicker(controller: _datePickerController), - ), + return Scaffold( + body: SfDateRangePicker(controller: _datePickerController), ); } } @@ -76,21 +118,32 @@ class MyAppState extends State { ## Allow view navigation -You can allow or restrict the built-in view navigation to any picker views by using the [allowViewNavigation](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/allowViewNavigation.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). It allows you to restrict the built-in view switching through touch interaction and allow you to select the cells in the year, decade and century views. +You can allow or restrict the built-in view navigation to any picker views by using the [allowViewNavigation](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/allowViewNavigation.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). It allows you to restrict the built-in view switching through touch interaction and allows you to select the cells in the year, decade and century views. {% tabs %} -{% highlight dart hl_lines="5" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: SfDateRangePicker( - allowViewNavigation: false - ) + allowViewNavigation: false, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -98,38 +151,54 @@ You can allow or restrict the built-in view navigation to any picker views by us ## Programmatic date selection -You can programmatically select the dates in the calendar widget by using the [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) property. +You can programmatically select the dates in the calendar widget by using the [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) class. ### Single selection Initially or during the run time, you can select the date programmatically by using the [selectedDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/selectedDate.html) of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) property. It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single). {% tabs %} -{% highlight dart hl_lines="6 10 20 21" %} +{% highlight dart hl_lines="3 14 18 28 29" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); -class MyApp extends StatefulWidget { @override - _MyAppState createState() => _MyAppState(); + Widget build(BuildContext context) { + return MaterialApp( + home: _SingleSelectionExample(), + ); + } +} + +class _SingleSelectionExample extends StatefulWidget { + @override + State<_SingleSelectionExample> createState() => _SingleSelectionExampleState(); } -class _MyAppState extends State { - DateRangePickerController _datePickerController = DateRangePickerController(); +class _SingleSelectionExampleState extends State<_SingleSelectionExample> { + final DateRangePickerController _datePickerController = DateRangePickerController(); @override - initState() { - _datePickerController.selectedDate = DateTime.now().add(Duration(days: 2)); + void initState() { + _datePickerController.selectedDate = DateTime.now().add(const Duration(days: 2)); super.initState(); } @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.single, - controller: _datePickerController, - ), + return Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.single, + controller: _datePickerController, ), ); } @@ -145,36 +214,52 @@ class _MyAppState extends State { Initially or during the run time, you can select the multiple dates programmatically by using the [selectedDates](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/selectedDates.html) of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) property. It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.multiple](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiple). {% tabs %} -{% highlight dart hl_lines="6 10 11 12 13 14 15 25 26" %} +{% highlight dart hl_lines="3 14 18 19 20 21 22 23 33 34" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: _MultiSelectionExample(), + ); + } +} -class MyApp extends StatefulWidget { +class _MultiSelectionExample extends StatefulWidget { @override - _MyAppState createState() => _MyAppState(); + State<_MultiSelectionExample> createState() => _MultiSelectionExampleState(); } -class _MyAppState extends State { - DateRangePickerController _datePickerController = DateRangePickerController(); +class _MultiSelectionExampleState extends State<_MultiSelectionExample> { + final DateRangePickerController _datePickerController = DateRangePickerController(); @override - initState() { + void initState() { _datePickerController.selectedDates = [ - DateTime.now().add(Duration(days: 2)), - DateTime.now().add(Duration(days: 4)), - DateTime.now().add(Duration(days: 7)), - DateTime.now().add(Duration(days: 11)), + DateTime.now().add(const Duration(days: 2)), + DateTime.now().add(const Duration(days: 4)), + DateTime.now().add(const Duration(days: 7)), + DateTime.now().add(const Duration(days: 11)), ]; super.initState(); } @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.multiple, - controller: _datePickerController, - ), + return Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.multiple, + controller: _datePickerController, ), ); } @@ -190,13 +275,36 @@ class _MyAppState extends State { Initially or during run time, you can select the single date range programmatically by using the [selectedRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/selectedRange.html) of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) property. It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range). {% tabs %} -{% highlight dart hl_lines="2 6 7 17 18" %} +{% highlight dart hl_lines="3 12 16 17 27 28" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; -class MyAppState extends State { - DateRangePickerController _datePickerController = DateRangePickerController(); +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override - initState() { + Widget build(BuildContext context) { + return MaterialApp( + home: _RangeSelectionExample(), + ); + } +} + +class _RangeSelectionExample extends StatefulWidget { + @override + State<_RangeSelectionExample> createState() => _RangeSelectionExampleState(); +} + +class _RangeSelectionExampleState extends State<_RangeSelectionExample> { + final DateRangePickerController _datePickerController = DateRangePickerController(); + + @override + void initState() { _datePickerController.selectedRange = PickerDateRange(DateTime(2020, 03, 01), DateTime(2020, 03, 05)); super.initState(); @@ -204,13 +312,11 @@ class MyAppState extends State { @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.range, - controller: _datePickerController, - ), + return Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.range, + controller: _datePickerController, ), ); } @@ -219,43 +325,61 @@ class MyAppState extends State { {% endhighlight %} {% endtabs %} -![Programmatic selectedrange Date Range Picker](images/date-navigations/programmatic-range selection.png) +![Programmatic selectedrange Date Range Picker](images/date-navigations/programmatic-range-selection.png) ### Multi Range selection Initially or during run time, you can select more than one date range programmatically by using the [selectedRanges](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/selectedRanges.html) of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) property. It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.multiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange). +N> The [PickerDateRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/PickerDateRange-class.html) class represents a date range with a start date and an optional end date. + {% tabs %} -{% highlight dart hl_lines="6 10 11 12 13 14 15 25 26" %} +{% highlight dart hl_lines="3 14 18 19 20 21 22 23 24 34 35" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); -class MyApp extends StatefulWidget { @override - _MyAppState createState() => _MyAppState(); + Widget build(BuildContext context) { + return MaterialApp( + home: _MultiRangeSelectionExample(), + ); + } +} + +class _MultiRangeSelectionExample extends StatefulWidget { + @override + State<_MultiRangeSelectionExample> createState() => _MultiRangeSelectionExampleState(); } -class _MyAppState extends State { - DateRangePickerController _datePickerController = DateRangePickerController(); +class _MultiRangeSelectionExampleState extends State<_MultiRangeSelectionExample> { + final DateRangePickerController _datePickerController = DateRangePickerController(); @override - initState() { - _datePickerController.selectedRanges =[ - PickerDateRange(DateTime.now().subtract(Duration(days: 4)), - DateTime.now().add(Duration(days: 4))), - PickerDateRange(DateTime.now().add(Duration(days: 11)), - DateTime.now().add(Duration(days: 16))) + void initState() { + _datePickerController.selectedRanges = [ + PickerDateRange(DateTime.now().subtract(const Duration(days: 4)), + DateTime.now().add(const Duration(days: 4))), + PickerDateRange(DateTime.now().add(const Duration(days: 11)), + DateTime.now().add(const Duration(days: 16))) ]; super.initState(); } @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body:SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.multiRange, - controller: _datePickerController, - ) + return Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.multiRange, + controller: _datePickerController, ), ); } @@ -272,32 +396,54 @@ By default, the date can be navigated to next and previous views using the touch ### Forward -You can use the [forward](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/forward.html) method of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) for viewing the next immediate next visible dates in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). It will move to next month if the calendar view is a month. +You can use the [forward](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/forward.html) method of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) for viewing the next visible dates in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). It will move to next month if the calendar view is a month. {% tabs %} -{% highlight dart hl_lines="2 13 20" %} +{% highlight dart hl_lines="3 14 21" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; -class MyAppState extends State { - DateRangePickerController _datePickerController = DateRangePickerController(); +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: Text('DateRangePicker Demo'), - actions: [ - IconButton(icon: Icon(Icons.arrow_forward), - onPressed: () { - _datePickerController.forward!(); - }, - ), - ], - ), - body: SfDateRangePicker( - view: DateRangePickerView.month, - controller: _datePickerController, - ), + home: _ForwardExample(), + ); + } +} + +class _ForwardExample extends StatefulWidget { + @override + State<_ForwardExample> createState() => _ForwardExampleState(); +} + +class _ForwardExampleState extends State<_ForwardExample> { + final DateRangePickerController _datePickerController = DateRangePickerController(); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('DateRangePicker Demo'), + actions: [ + IconButton(icon: const Icon(Icons.arrow_forward), + onPressed: () { + // Use the null assertion operator because `forward` is a nullable method. + _datePickerController.forward!(); + }, + ), + ], + ), + body: SfDateRangePicker( + view: DateRangePickerView.month, + controller: _datePickerController, ), ); } @@ -308,33 +454,55 @@ class MyAppState extends State { ### Backward -You can use the [backward](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/backward.html) method of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) for viewing the previous immediate previous visible dates in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). It will move to the previous month if the calendar view is in month. +You can use the [backward](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/backward.html) method of [DateRangePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController-class.html) for viewing the previous visible dates in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). It will move to the previous month if the calendar view is in month. {% tabs %} -{% highlight dart hl_lines="2 14 21" %} +{% highlight dart hl_lines="3 15 22" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; -class MyAppState extends State { - DateRangePickerController _datePickerController = DateRangePickerController(); +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: Text('DateRangePicker Demo'), - actions: [ - IconButton( - icon: Icon(Icons.arrow_back), - onPressed: () { - _datePickerController.backward!(); - }, - ), - ], - ), - body: SfDateRangePicker( - view: DateRangePickerView.month, - controller: _datePickerController, - ), + home: _BackwardExample(), + ); + } +} + +class _BackwardExample extends StatefulWidget { + @override + State<_BackwardExample> createState() => _BackwardExampleState(); +} + +class _BackwardExampleState extends State<_BackwardExample> { + final DateRangePickerController _datePickerController = DateRangePickerController(); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('DateRangePicker Demo'), + actions: [ + IconButton( + icon: const Icon(Icons.arrow_back), + onPressed: () { + // Use the null assertion operator because `backward` is a nullable method. + _datePickerController.backward!(); + }, + ), + ], + ), + body: SfDateRangePicker( + view: DateRangePickerView.month, + controller: _datePickerController, ), ); } @@ -349,17 +517,30 @@ class MyAppState extends State { You can navigate the Month, Year, Decade, and Century views either [Vertical](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerNavigationDirection.html#vertical) or [Horizontal](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerNavigationDirection.html#horizontal) directions by setting the [navigationDirection](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/navigationDirection.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - navigationDirection: DateRangePickerNavigationDirection.vertical, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + navigationDirection: DateRangePickerNavigationDirection.vertical, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -370,7 +551,17 @@ You can navigate the Month, Year, Decade, and Century views either [Vertical](ht You can customize the navigation mode of the date range picker by using the [navigationMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/navigationMode.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html), which has options to disable the view navigation using the swipe interaction, also allows to scroll the view. By default, the [navigationMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/navigationMode.html) is set to [DateRangePickerNavigationMode.snap](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerNavigationMode.html). {% tabs %} -{% highlight dart hl_lines="7" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -383,6 +574,7 @@ You can customize the navigation mode of the date range picker by using the [nav ), ); } +} {% endhighlight %} {% endtabs %} @@ -390,7 +582,7 @@ You can customize the navigation mode of the date range picker by using the [nav ![navigationMode](images/date-navigations/navigation_mode.gif) >**NOTE** -When the navigation mode is set to [DateRangePickerNavigationMode.scroll](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerNavigationMode.html#scroll). +When the navigation mode is set to [DateRangePickerNavigationMode.scroll](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerNavigationMode.html#scroll): * Swipe selection is not supported when the range and multi-range are the selection modes. * The [onViewChanged](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onViewChanged.html) will be called when the view reaches the starting position of the date range picker view. * [forward](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/forward.html), [backward](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/backward.html) and [showNavigationArrow](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/showNavigationArrow.html) is not supported. @@ -401,17 +593,30 @@ When the navigation mode is set to [DateRangePickerNavigationMode.scroll](https: Using the [showNavigationArrow](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/showNavigationArrow.html) property of the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) you can move to the next or previous views of the picker without swiping. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - showNavigationArrow: true, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + showNavigationArrow: true, + ), ), ); } +} {% endhighlight %} {% endtabs %} diff --git a/Flutter/DateRangePicker/date-restrictions.md b/Flutter/DateRangePicker/date-restrictions.md index 0fcd62bfa..45232ccd2 100644 --- a/Flutter/DateRangePicker/date-restrictions.md +++ b/Flutter/DateRangePicker/date-restrictions.md @@ -14,17 +14,30 @@ documentation: ug The [minDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/minDate.html) will restrict [backward](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/backward.html) date navigations features, and cannot swipe the control using the touch gesture beyond the min date range in all views. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - minDate: DateTime(2020, 03, 05, 10, 0, 0), + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + minDate: DateTime(2020, 03, 05, 10, 0, 0), + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -34,17 +47,30 @@ The [minDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest The [maxDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/maxDate.html) will restrict [forward](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/forward.html) date navigations features, and cannot swipe the control using the touch gesture beyond the max date range in all views. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - maxDate: DateTime(2020, 03, 25, 10, 0, 0), + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + maxDate: DateTime(2020, 03, 25, 10, 0, 0), + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -56,17 +82,30 @@ The [maxDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) allows you to enable or disable the past dates from today's date in `MonthView`. This can be achieved by changing the [enablePastDates](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/enablePastDates.html) property. By default, the value of this property is set to true. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - enablePastDates: false, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + enablePastDates: false, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -75,50 +114,77 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic ## Blackout Dates -In [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html), [blackoutDates](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/blackoutDates.html) refer to the disabled dates that restrict the user from selecting it. These dates will be marked with Strikethrough. +In [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html), [blackoutDates](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/blackoutDates.html) refer to the disabled dates that restrict the user from selecting them. These dates will be marked with strikethrough. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14 15" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.year, - monthViewSettings: DateRangePickerMonthViewSettings( - blackoutDates: [DateTime(2020, 03, 18), DateTime(2020, 03, 19)], + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + monthViewSettings: const DateRangePickerMonthViewSettings( + blackoutDates: [DateTime(2020, 03, 18), DateTime(2020, 03, 19)], + ), ), ), ); } +} {% endhighlight %} {% endtabs %} -## SelectableDayPredicate +## Selectable day predicate [selectableDayPredicate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectableDayPredicate.html) callback allows certain days for selection. Only the days that [selectableDayPredicate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectableDayPredicate.html) returns `true` will be selectable in the date range picker. {% tabs %} -{% highlight dart hl_lines="4 5 6 7 8 9" %} +{% highlight dart hl_lines="12 13 14 15 16 17" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SafeArea( - child: Card( - child: SfDateRangePicker( - selectableDayPredicate: (DateTime dateTime) { - if (dateTime == DateTime(2021, 9, 5)) { - return false; - } - return true; - }, + return MaterialApp( + home: Scaffold( + body: SafeArea( + child: Card( + child: SfDateRangePicker( + view: DateRangePickerView.month, + selectableDayPredicate: (DateTime dateTime) { + if (dateTime == DateTime(2021, 9, 5)) { + return false; + } + return true; + }, + ), ), ), ), ); } +} {% endhighlight %} {% endtabs %} diff --git a/Flutter/DateRangePicker/getting-started.md b/Flutter/DateRangePicker/getting-started.md index 9eecf193e..97f46954c 100644 --- a/Flutter/DateRangePicker/getting-started.md +++ b/Flutter/DateRangePicker/getting-started.md @@ -11,7 +11,7 @@ documentation: ug This section explains the steps required to add the [date range picker](https://www.syncfusion.com/flutter-widgets/flutter-daterangepicker) widget. This section covers only basic features needed to get started with Syncfusion® date range picker widget. -To get start quickly with our Flutter date range picker widget, you can check on this video. +To get started quickly with our Flutter date range picker widget, you can refer to this video. @@ -24,32 +24,35 @@ Create a simple project using the instructions given in the [Getting Started wit Add the Syncfusion® Flutter date range picker dependency to your `pubspec.yaml` file. -{% highlight dart %} +{% tabs %} +{% highlight yaml %} dependencies: - -syncfusion_flutter_datepicker: ^xx.x.xx + syncfusion_flutter_datepicker: ^xx.x.xx {% endhighlight %} +{% endtabs %} -N> Here **xx.x.xx** denotes the current version of [`Syncfusion Flutter Date Picker`](https://pub.dev/packages/syncfusion_flutter_datepicker/versions) package. +N> Here **xx.x.xx** denotes the current version of [`Syncfusion Flutter Date Picker`](https://pub.dev/packages/syncfusion_flutter_datepicker/versions) package. It is recommended to use the latest available version from pub.dev. **Get packages** Run the following command to get the required packages. -{% highlight dart %} +{% tabs %} +{% highlight bash %} -$ flutter pub get +flutter pub get {% endhighlight %} +{% endtabs %} **Import package** Import the following package in your Dart code. {% tabs %} -{% highlight Dart %} +{% highlight dart %} import 'package:syncfusion_flutter_datepicker/datepicker.dart'; @@ -58,20 +61,33 @@ import 'package:syncfusion_flutter_datepicker/datepicker.dart'; ## Initialize date range picker -After importing the package, initialize the date range picker widget as a child of any widget. Here, the date range picker widget is added as a child of the scaffold widget. +After importing the package, initialize the date range picker widget as a child of any widget. Here, the date range picker widget is added as a child of the `Scaffold` widget. {% tabs %} -{% highlight dart hl_lines="5" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: Container( - child: SfDateRangePicker() - ) + return MaterialApp( + home: Scaffold( + body: Container( + child: SfDateRangePicker(), + ), + ), ); } - +} + {% endhighlight %} {% endtabs %} @@ -82,16 +98,29 @@ After importing the package, initialize the date range picker widget as a child The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) widget provides four different types of views to display. It can be assigned to the widget constructor by using the [view](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/view.html) property. Default view of the widget is month view. By default the current date will be displayed initially for all the date range picker views. {% tabs %} -{% highlight dart hl_lines="5" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.year - ) + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.year, + ), + ), ); } +} {% endhighlight %} {% endtabs %} @@ -103,19 +132,32 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) widget will be rendered with Sunday as the first day of the week, but you can customize it to any day by using the [firstDayOfWeek](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/firstDayOfWeek.html) property. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="15" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - monthViewSettings: DateRangePickerMonthViewSettings( - firstDayOfWeek: 1 + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + monthViewSettings: const DateRangePickerMonthViewSettings( + firstDayOfWeek: 1, + ), ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -127,11 +169,17 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic The selected date or range details can be obtained using the [onSelectionChanged](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onSelectionChanged.html) callback of date range picker. The callback will return the [DateRangePickerSelectionChangedArgs](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionChangedArgs-class.html) which contains the selected date or range details. {% tabs %} -{% highlight dart hl_lines="1 2 3 11" %} +{% highlight dart hl_lines="15 16 17 26" %} - void _onSelectionChanged(DateRangePickerSelectionChangedArgs args) { - // TODO: implement your code here - } +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { @@ -147,6 +195,11 @@ The selected date or range details can be obtained using the [onSelectionChanged ); } + void _onSelectionChanged(DateRangePickerSelectionChangedArgs args) { + // TODO: implement your code here + } +} + {% endhighlight %} {% endtabs %} @@ -158,17 +211,30 @@ You can highlight the today’s date by customizing its color in the date range {% tabs %} -{% highlight dart hl_lines="11" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - todayHighlightColor: Colors.green, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + todayHighlightColor: Colors.green, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -177,41 +243,53 @@ You can highlight the today’s date by customizing its color in the date range You can display action buttons at the bottom of the date range picker by using the [showActionButtons](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/showActionButtons.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). -* [confirmText](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/confirmText.html) - Customizes the text that display on the confirm button. +* [confirmText](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/confirmText.html) - Customizes the text displayed on the confirm button. -* [cancelText](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/cancelText.html) - Customizes the text that display on the cancel button. +* [cancelText](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/cancelText.html) - Customizes the text displayed on the cancel button. -* [onCancel](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onCancel.html) - Callback function that is triggered when the cancel button is tapped within a date range picker. +* [onCancel](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onCancel.html) - Callback function that is triggered when the cancel button is tapped within the date range picker. -* [onSubmit](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onSubmit.html) - Callback function that is triggered when the confirm button is tapped within a date range picker. +* [onSubmit](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/onSubmit.html) - Callback function that is triggered when the confirm button is tapped within the date range picker. {% tabs %} -{% highlight dart hl_lines="11" %} +{% highlight dart hl_lines="16" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: TextButton( - child: Text('Show picker'), - onPressed: () { - showDialog( - context: context, - builder: (BuildContext context) { - return SfDateRangePicker( - showActionButtons: true, - onSubmit: (Object value) { - Navigator.pop(context); - }, - onCancel: () { - Navigator.pop(context); - }, - ); - }, - ); - }, + return MaterialApp( + home: Scaffold( + body: TextButton( + child: const Text('Show picker'), + onPressed: () { + showDialog( + context: context, + builder: (BuildContext context) { + return SfDateRangePicker( + showActionButtons: true, + onSubmit: (Object value) { + Navigator.pop(context); + }, + onCancel: () { + Navigator.pop(context); + }, + ); + }, + ); + }, + ), ), ); - } + } {% endhighlight %} {% endtabs %} @@ -220,20 +298,33 @@ You can display action buttons at the bottom of the date range picker by using t ## Today button -The today button can be displayed at the bottom of the date range picker by using the [showTodayButton](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/showTodayButton.html) property of the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). It easily moves to the current date of the picker view. +The today button can be displayed at the bottom of the date range picker by using the [showTodayButton](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/showTodayButton.html) property of the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). The today button moves the view to the current date. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const DateRangePickerApp()); +} + +class DateRangePickerApp extends StatelessWidget { + const DateRangePickerApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - showTodayButton: true, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + showTodayButton: true, + ), ), ); } +} {% endhighlight %} {% endtabs %} diff --git a/Flutter/DateRangePicker/headers.md b/Flutter/DateRangePicker/headers.md index dd3c5a532..2e44c2385 100644 --- a/Flutter/DateRangePicker/headers.md +++ b/Flutter/DateRangePicker/headers.md @@ -16,17 +16,30 @@ You can customize the header of the date range picker using the [headerStyle](ht You can customize the height of the header of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [headerHeight](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/headerHeight.html) property. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - headerHeight: 100, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + headerHeight: 100, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -38,25 +51,38 @@ You can customize the height of the header of [SfDateRangePicker](https://pub.de You can customize the header style of the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerHeaderStyle/backgroundColor.html), [textStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerHeaderStyle/textStyle.html), and [textAlign](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerHeaderStyle/textAlign.html) properties of [DateRangePickerHeaderStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerHeaderStyle-class.html). {% tabs %} -{% highlight dart hl_lines="6 7 8 9 10 11 12 13 14" %} +{% highlight dart hl_lines="14 15 16 17 18 19 20 21 22 23" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - headerStyle: DateRangePickerHeaderStyle( - backgroundColor: Color(0xFF7fcd91), - textAlign: TextAlign.center, - textStyle: TextStyle( - fontStyle: FontStyle.normal, - fontSize: 25, - letterSpacing: 5, - color: Color(0xFFffeaea), + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + headerStyle: const DateRangePickerHeaderStyle( + backgroundColor: Color(0xFF7fcd91), + textAlign: TextAlign.center, + textStyle: TextStyle( + fontStyle: FontStyle.normal, + fontSize: 25, + letterSpacing: 5, + color: Color(0xFFffeaea), + ), ), + ), ), - ), - ); + ); + } } {% endhighlight %} @@ -73,19 +99,32 @@ You can customize the view header of the [SfDateRangePicker](https://pub.dev/doc You can customize the view header height of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) using the [viewHeaderHeight](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/viewHeaderHeight.html) property of [DateRangePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings-class.html). {% tabs %} -{% highlight dart hl_lines="6 7" %} +{% highlight dart hl_lines="14 15" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - monthViewSettings: DateRangePickerMonthViewSettings( - viewHeaderHeight: 100, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + monthViewSettings: const DateRangePickerMonthViewSettings( + viewHeaderHeight: 100, + ), ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -97,22 +136,35 @@ You can customize the view header height of [SfDateRangePicker](https://pub.dev/ You can customize the view header style of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerViewHeaderStyle/backgroundColor.html), [textStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerViewHeaderStyle/textStyle.html) properties of [DateRangePickerViewHeaderStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerViewHeaderStyle-class.html). {% tabs %} -{% highlight dart hl_lines="7 8 9" %} +{% highlight dart hl_lines="16 17 18" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - monthViewSettings: DateRangePickerMonthViewSettings( - viewHeaderStyle: DateRangePickerViewHeaderStyle( - backgroundColor: Color(0xFF7fcd91), - textStyle: TextStyle(fontSize: 20, letterSpacing: 5), + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + monthViewSettings: const DateRangePickerMonthViewSettings( + viewHeaderStyle: DateRangePickerViewHeaderStyle( + backgroundColor: Color(0xFF7fcd91), + textStyle: TextStyle(fontSize: 20, letterSpacing: 5), + ), ), ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -124,17 +176,30 @@ You can customize the view header style of [SfDateRangePicker](https://pub.dev/d You can customize the view header of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) by using the [dayFormat](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/dayFormat.html) property of [DateRangePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings-class.html). {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - monthViewSettings: DateRangePickerMonthViewSettings(dayFormat: 'EEE'), + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + monthViewSettings: const DateRangePickerMonthViewSettings(dayFormat: 'EEE'), + ), ), ); } +} {% endhighlight %} {% endtabs %} diff --git a/Flutter/DateRangePicker/hijri-date-picker.md b/Flutter/DateRangePicker/hijri-date-picker.md index 98fc5b2bf..a29cab745 100644 --- a/Flutter/DateRangePicker/hijri-date-picker.md +++ b/Flutter/DateRangePicker/hijri-date-picker.md @@ -7,33 +7,44 @@ control: SfDateRangePicker documentation: ug --- -# Flutter Hijri Date Range Picker Brief (SfHijriDateRangePicker) +# Flutter Hijri Date Range Picker (SfHijriDateRangePicker) Overview Along with the Gregorian calendar, the picker package contains a Hijri date picker to display the Islamic calendar. Islamic calendar or Hijri calendar is a lunar calendar consisting of 12 months in a year of 354 or 355 days. To know more about the Islamic calendar, kindly refer to [Wikipedia](https://en.wikipedia.org/wiki/Islamic_calendar). It consists of all the Gregorian calendar functionalities like min and max date, the first day of the week, different selection modes, RTL, and customization for special dates. -To display the Hijri date picker, initialize the [HijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker-class.html) widget as a child of any widget. Here, the Hijri date range picker added as a child of the scaffold widget. +To display the Hijri date picker, initialize the [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker-class.html) widget as a child of any widget. Here, the Hijri date range picker is added as a child of the `Scaffold` widget. {% tabs %} -{% highlight dart hl_lines="4" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( - body: SfHijriDateRangePicker() - ) + body: SfHijriDateRangePicker(), + ), ); } +} {% endhighlight %} {% endtabs %} ![Hijri date range picker](images/hijri-picker/hijri_programattic_view_navigation.jpg) ->**NOTE** -* Most of the properties type and classes were same from [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) except the followings [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html), [HijriDatePickerMonthCellStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthCellStyle-class.html), [HijriDatePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthViewSettings-class.html), [HijriDatePickerViewChangedArgs](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerViewChangedArgs-class.html), [HijriDatePickerYearCellStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerYearCellStyle-class.html), [HijriDateRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDateRange-class.html) and [HijriDatePickerView](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerView.html). +>**NOTE** +* Most property and class types are the same as [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html), except for the following: [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html), [HijriDatePickerMonthCellStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthCellStyle-class.html), [HijriDatePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthViewSettings-class.html), [HijriDatePickerViewChangedArgs](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerViewChangedArgs-class.html), [HijriDatePickerYearCellStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerYearCellStyle-class.html), [HijriDateRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDateRange-class.html) and [HijriDatePickerView](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerView.html). * Use the [HijriDateTime](https://pub.dev/documentation/syncfusion_flutter_core/latest/core/HijriDateTime-class.html) class to define the date for [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker-class.html). ## Multiple picker views @@ -41,7 +52,17 @@ To display the Hijri date picker, initialize the [HijriDateRangePicker](https:// The [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker-class.html) widget provides three different types of views to display. It can be assigned to the widget constructor by using the [view](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker/view.html) property. The default view of the widget is the month view. By default, the current date will be displayed initially for all the date range picker views. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="15" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -51,6 +72,7 @@ The [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_da ), ); } +} {% endhighlight %} {% endtabs %} @@ -59,10 +81,20 @@ The [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_da ## Change first day of week -The [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker-class.html) widget will be rendered with Sunday as the first day of the week but you can customize it to any day by using the [firstDayOfWeek](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthViewSettings/firstDayOfWeek.html) property [HijriDatePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthViewSettings-class.html). +The [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker-class.html) widget will be rendered with Sunday as the first day of the week but you can customize it to any day by using the [firstDayOfWeek](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthViewSettings/firstDayOfWeek.html) property of [HijriDatePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthViewSettings-class.html). {% tabs %} -{% highlight dart hl_lines="7" %} +{% highlight dart hl_lines="16" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -70,13 +102,14 @@ The [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_da home: Scaffold( body: SfHijriDateRangePicker( view: HijriDatePickerView.month, - monthViewSettings: HijriDatePickerMonthViewSettings( + monthViewSettings: const HijriDatePickerMonthViewSettings( firstDayOfWeek: 1, ), ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -88,7 +121,17 @@ The [SfHijriDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_da Display the Week number of the year in the month view by setting the [showWeekNumber](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthViewSettings/showWeekNumber.html) property of the [HijriDatePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerMonthViewSettings-class.html) as true, and by default it is false. The Week numbers will be displayed based on the ISO standard. {% tabs %} -{% highlight dart hl_lines="7 8 9" %} +{% highlight dart hl_lines="21" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -103,6 +146,7 @@ Display the Week number of the year in the month view by setting the [showWeekNu ), ); } +} {% endhighlight %} {% endtabs %} @@ -114,7 +158,17 @@ Display the Week number of the year in the month view by setting the [showWeekNu Customize the Week number style by using the [textStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerWeekNumberStyle/textStyle.html) and the [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerWeekNumberStyle/backgroundColor.html) properties of the [DateRangePickerWeekNumberStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerWeekNumberStyle-class.html). {% tabs %} -{% highlight dart hl_lines="9 10 11" %} +{% highlight dart hl_lines="23 24 25" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -133,6 +187,7 @@ Customize the Week number style by using the [textStyle](https://pub.dev/documen ), ); } +} {% endhighlight %} {% endtabs %} @@ -148,24 +203,36 @@ The selected date or range details can be obtained using the [onSelectionChanged {% tabs %} -{% highlight dart hl_lines="12" %} +{% highlight dart hl_lines="25" %} - void _onSelectionChanged(DateRangePickerSelectionChangedArgs args) { - /// TODO: implement your code here - } +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: SfHijriDateRangePicker( - view: HijriDatePickerView.month, - selectionMode: DateRangePickerSelectionMode.range, - onSelectionChanged: _onSelectionChanged, - )), + view: HijriDatePickerView.month, + selectionMode: DateRangePickerSelectionMode.range, + onSelectionChanged: _onSelectionChanged, + ), + ), ); } + void _onSelectionChanged(DateRangePickerSelectionChangedArgs args) { + /// TODO: implement your code here + } +} + {% endhighlight %} {% endtabs %} @@ -175,11 +242,37 @@ The selected date or range details can be obtained using the [onSelectionChanged You can programmatically navigate date in the Hijri date picker widget by using the [displayDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController/displayDate.html) property from [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). +N> The [HijriDateTime](https://pub.dev/documentation/syncfusion_flutter_core/latest/core/HijriDateTime-class.html) class is used to represent Hijri dates, similar to how [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html) represents Gregorian dates. + {% tabs %} -{% highlight dart hl_lines="2 6 15" %} +{% highlight dart hl_lines="3 16 25" %} -class MyAppState extends State { - HijriDatePickerController _controller = HijriDatePickerController(); +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; +import 'package:syncfusion_flutter_core/core.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: _HijriDisplayDateExample(), + ); + } +} + +class _HijriDisplayDateExample extends StatefulWidget { + @override + State<_HijriDisplayDateExample> createState() => _HijriDisplayDateExampleState(); +} + +class _HijriDisplayDateExampleState extends State<_HijriDisplayDateExample> { + final HijriDatePickerController _controller = HijriDatePickerController(); @override void initState() { @@ -189,12 +282,11 @@ class MyAppState extends State { @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfHijriDateRangePicker( + return Scaffold( + body: SfHijriDateRangePicker( controller: _controller, view: HijriDatePickerView.month, - )), + ), ); } } @@ -209,10 +301,33 @@ class MyAppState extends State { You can programmatically navigate to any view in the Hijri date picker widget by using the [view](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController/view.html) property of [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). {% tabs %} -{% highlight dart hl_lines="2 6 15" %} +{% highlight dart hl_lines="3 16 25" %} -class MyAppState extends State { - HijriDatePickerController _controller = HijriDatePickerController(); +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: _HijriViewNavigationExample(), + ); + } +} + +class _HijriViewNavigationExample extends StatefulWidget { + @override + State<_HijriViewNavigationExample> createState() => _HijriViewNavigationExampleState(); +} + +class _HijriViewNavigationExampleState extends State<_HijriViewNavigationExample> { + final HijriDatePickerController _controller = HijriDatePickerController(); @override void initState() { @@ -222,11 +337,10 @@ class MyAppState extends State { @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfHijriDateRangePicker( + return Scaffold( + body: SfHijriDateRangePicker( controller: _controller, - )), + ), ); } } @@ -244,29 +358,51 @@ For selection [refer](https://help.syncfusion.com/flutter/daterangepicker/select ### Single selection -You can select the date programmatically by using the [selectedDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/selectedDate.html) property of [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single). +You can select the date programmatically by using the [selectedDate](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController/selectedDate.html) property of [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single). {% tabs %} -{% highlight dart hl_lines="2 7 16 17" %} +{% highlight dart hl_lines="3 22 23" %} -class MyAppState extends State { - HijriDatePickerController _controller = HijriDatePickerController(); +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; +import 'package:syncfusion_flutter_core/core.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: _SingleSelectionExample(), + ); + } +} + +class _SingleSelectionExample extends StatefulWidget { + @override + State<_SingleSelectionExample> createState() => _SingleSelectionExampleState(); +} + +class _SingleSelectionExampleState extends State<_SingleSelectionExample> { + final HijriDatePickerController _controller = HijriDatePickerController(); @override void initState() { _controller.view = HijriDatePickerView.month; - _controller.selectedDate = HijriDateTime.now().add(Duration(days: 1)); + _controller.selectedDate = HijriDateTime.now().add(const Duration(days: 1)); super.initState(); } @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfHijriDateRangePicker( - selectionMode: DateRangePickerSelectionMode.single, - controller: _controller, - ), + return Scaffold( + body: SfHijriDateRangePicker( + selectionMode: DateRangePickerSelectionMode.single, + controller: _controller, ), ); } @@ -279,34 +415,56 @@ class MyAppState extends State { ### Multi selection -You can select the multiple dates programmatically by using the [selectedDates](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/selectedDates.html) property of [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). It is only applicable when the selectionMode is set to [DateRangePickerSelectionMode.multiple](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiple). +You can select the multiple dates programmatically by using the [selectedDates](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController/selectedDates.html) property of [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). It is only applicable when the selectionMode is set to [DateRangePickerSelectionMode.multiple](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiple). {% tabs %} -{% highlight dart hl_lines="2 7 8 9 10 11 12 21 22" %} +{% highlight dart hl_lines="3 22 23 24 25 26 27" %} -class MyAppState extends State { - HijriDatePickerController _controller = HijriDatePickerController(); +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; +import 'package:syncfusion_flutter_core/core.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: _MultiSelectionExample(), + ); + } +} + +class _MultiSelectionExample extends StatefulWidget { + @override + State<_MultiSelectionExample> createState() => _MultiSelectionExampleState(); +} + +class _MultiSelectionExampleState extends State<_MultiSelectionExample> { + final HijriDatePickerController _controller = HijriDatePickerController(); @override void initState() { _controller.view = HijriDatePickerView.month; _controller.selectedDates = [ - HijriDateTime.now().add(Duration(days: 2)), - HijriDateTime.now().add(Duration(days: 4)), - HijriDateTime.now().add(Duration(days: 7)), - HijriDateTime.now().add(Duration(days: 11)) + HijriDateTime.now().add(const Duration(days: 2)), + HijriDateTime.now().add(const Duration(days: 4)), + HijriDateTime.now().add(const Duration(days: 7)), + HijriDateTime.now().add(const Duration(days: 11)) ]; super.initState(); } @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfHijriDateRangePicker( - selectionMode: DateRangePickerSelectionMode.multiple, - controller: _controller, - ), + return Scaffold( + body: SfHijriDateRangePicker( + selectionMode: DateRangePickerSelectionMode.multiple, + controller: _controller, ), ); } @@ -319,15 +477,39 @@ class MyAppState extends State { ### Range selection -You can select the single date range programmatically by using the [selectedRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/selectedRange.html) property of [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range). +You can select the single date range programmatically by using the [selectedRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController/selectedRange.html) property of [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range). Use the [HijriDateRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDateRange-class.html) to define the date range for the Hijri date picker. {% tabs %} -{% highlight dart hl_lines="2 7 8 17 18" %} +{% highlight dart hl_lines="3 22 23 24 34" %} -class MyAppState extends State { - HijriDatePickerController _controller = HijriDatePickerController(); +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; +import 'package:syncfusion_flutter_core/core.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: _RangeSelectionExample(), + ); + } +} + +class _RangeSelectionExample extends StatefulWidget { + @override + State<_RangeSelectionExample> createState() => _RangeSelectionExampleState(); +} + +class _RangeSelectionExampleState extends State<_RangeSelectionExample> { + final HijriDatePickerController _controller = HijriDatePickerController(); @override void initState() { @@ -339,12 +521,10 @@ class MyAppState extends State { @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfHijriDateRangePicker( - selectionMode: DateRangePickerSelectionMode.range, - controller: _controller, - ), + return Scaffold( + body: SfHijriDateRangePicker( + selectionMode: DateRangePickerSelectionMode.range, + controller: _controller, ), ); } @@ -357,34 +537,56 @@ class MyAppState extends State { ### Multi-range selection -You can select more than one date range programmatically by using the [selectedRanges](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerController/selectedRanges.html) property of [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.multiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange). +You can select more than one date range programmatically by using the [selectedRanges](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController/selectedRanges.html) property of [HijriDatePickerController](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/HijriDatePickerController-class.html). It is only applicable when the [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfHijriDateRangePicker/selectionMode.html) is set to [DateRangePickerSelectionMode.multiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange). {% tabs %} -{% highlight dart hl_lines="2 7 8 9 10 11 12 21 22" %} +{% highlight dart hl_lines="3 23 24 25 26 27 28 38" %} -class MyAppState extends State { - HijriDatePickerController _controller = HijriDatePickerController(); +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; +import 'package:syncfusion_flutter_core/core.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: _MultiRangeSelectionExample(), + ); + } +} + +class _MultiRangeSelectionExample extends StatefulWidget { + @override + State<_MultiRangeSelectionExample> createState() => _MultiRangeSelectionExampleState(); +} + +class _MultiRangeSelectionExampleState extends State<_MultiRangeSelectionExample> { + final HijriDatePickerController _controller = HijriDatePickerController(); @override void initState() { _controller.view = HijriDatePickerView.month; _controller.selectedRanges = [ - HijriDateRange(HijriDateTime.now().add(Duration(days: 4)), - HijriDateTime.now().add(Duration(days: 9))), - HijriDateRange(HijriDateTime.now().add(Duration(days: 11)), - HijriDateTime.now().add(Duration(days: 16))) + HijriDateRange(HijriDateTime.now().add(const Duration(days: 4)), + HijriDateTime.now().add(const Duration(days: 9))), + HijriDateRange(HijriDateTime.now().add(const Duration(days: 11)), + HijriDateTime.now().add(const Duration(days: 16))) ]; super.initState(); } @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: SfHijriDateRangePicker( - selectionMode: DateRangePickerSelectionMode.multiRange, - controller: _controller, - ), + return Scaffold( + body: SfHijriDateRangePicker( + selectionMode: DateRangePickerSelectionMode.multiRange, + controller: _controller, ), ); } diff --git a/Flutter/DateRangePicker/how-to/custom-widget-on-flutterflow.md b/Flutter/DateRangePicker/how-to/custom-widget-on-flutterflow.md index e01458c94..6f1460c46 100644 --- a/Flutter/DateRangePicker/how-to/custom-widget-on-flutterflow.md +++ b/Flutter/DateRangePicker/how-to/custom-widget-on-flutterflow.md @@ -1,13 +1,13 @@ --- layout: post -title: DateRangePicker Widget in FlutterFlow framework | Syncfusion +title: DateRangePicker Widget in FlutterFlow | Syncfusion description: You can learn here all about adding Syncfusion Flutter DateRangePicker ( SfDateRangePicker ) widget in FlutterFlow framework. platform: flutter control: SfDateRangePicker documentation: ug --- -# How to add Syncfusion® DateRangePicker widget in FlutterFlow? +# How to add Syncfusion® DateRangePicker widget in Flutter? ## Overview @@ -22,8 +22,8 @@ Navigate to the [FlutterFlow dashboard](https://app.flutterflow.io/dashboard) an 1. Navigate to the `Custom Code` section in the left side navigation menu. 2. Click on the `+ Add` button to open a dropdown menu, then select `Widget`. 3. Update the widget name as desired. -4. Click the `View Boilerplate Code` button on the right side, represented by this icon `[]`. -5. A popup will appear with startup code; locate the button labeled ` Copy to Editor` and click on it. +4. Click the `View Boilerplate Code` button on the right side, represented by the `` icon. +5. A popup will appear with boilerplate code; locate the button labeled ` Copy to Editor` and click on it. 6. Save the widget. ![Custom Widget](how-to-section-images/custom-widget.png) @@ -35,7 +35,7 @@ Navigate to the [FlutterFlow dashboard](https://app.flutterflow.io/dashboard) an ![Version](how-to-section-images/copy-version.png) 3. Paste the copied dependency into the text editor, then click `Refresh` and `Save` it. ->**Note**: The live version of [Syncfusion® Flutter DatePicker](https://pub.dev/packages/syncfusion_flutter_datepicker) has been migrated to the latest version of Flutter SDK. To ensure compatibility, check [FlutterFlow](https://app.flutterflow.io/dashboard)'s current Flutter version and obtain the corresponding version of [Syncfusion® Flutter DatePicker](https://pub.dev/packages/syncfusion_flutter_datepicker) by referring to the [SDK compatibility](https://help.syncfusion.com/flutter/system-requirements#sdk-version-compatibility). +>**Note**: The current version of [Syncfusion® Flutter DatePicker](https://pub.dev/packages/syncfusion_flutter_datepicker) has been migrated to the latest version of Flutter SDK. To ensure compatibility, check [FlutterFlow](https://app.flutterflow.io/dashboard)'s current Flutter version and obtain the corresponding version of [Syncfusion® Flutter DatePicker](https://pub.dev/packages/syncfusion_flutter_datepicker) by referring to the [SDK compatibility](https://help.syncfusion.com/flutter/system-requirements#sdk-version-compatibility). ![Dependency](how-to-section-images/dependency.png) @@ -52,10 +52,10 @@ Navigate to the [FlutterFlow dashboard](https://app.flutterflow.io/dashboard) an ### Add widget code snippet in code editor -1. Navigate to the [Example](https://pub.dev/packages/syncfusion_flutter_datepicker/example) tab in [Syncfusion® Flutter DatePicker](https://pub.dev/packages/syncfusion_flutter_datepicker) and copy the widget specific codes. +1. Navigate to the [Example](https://pub.dev/packages/syncfusion_flutter_datepicker/example) tab in [Syncfusion® Flutter DatePicker](https://pub.dev/packages/syncfusion_flutter_datepicker) and copy the widget-specific code sample. ![Code](how-to-section-images/code-snippet.png) 2. Paste the copied code sample into the code editor, click `Format Code`, and `Save` it. -![Code snippet](how-to-section-images/Adding-code-snippent.png) +![Code snippet](how-to-section-images/Adding-code-snippet.png) ### Compiling the codes @@ -66,10 +66,13 @@ Navigate to the [FlutterFlow dashboard](https://app.flutterflow.io/dashboard) an >**Note**: The compilation progress takes 2 to 3 minutes to complete. +>**Troubleshooting**: Common errors include missing imports, version mismatches between the Syncfusion package and Flutter SDK, and incorrect property names. To resolve these, verify that all required imports are present, ensure the package version is compatible with the FlutterFlow Flutter version, and refer to the [SfDateRangePicker API reference](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) for correct property names. + ### Utilizing the custom widget 1. Navigate to `Widget Palette` located in the left side navigation menu. 2. Click on the `Components` tab. 3. Your custom widget will be under `Custom Code Widgets`. Drag and drop the custom widget to your page. +4. To wire the custom widget to FlutterFlow data sources, use the widget's parameters (defined in the custom widget's constructor) and bind them to FlutterFlow state values or data source fields in the right-side properties panel. ![Page](how-to-section-images/page.png) diff --git a/Flutter/DateRangePicker/how-to/how-to-section-images/Adding-code-snippent.png b/Flutter/DateRangePicker/how-to/how-to-section-images/Adding-code-snippent.png deleted file mode 100644 index 07ca4e3ec2d5f6c5696060be63c9ad1e1a47b1ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86423 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® Flutter Date Range Picker is a lightweight widget ## Key features -* **Multiple picker views**: Display month, year, decade, and century views that allow users to easily select and navigate between built-in views. Supports programmatic navigation. +* **Multiple picker views**: Display month, year, decade, and century views that allow users to easily select and navigate between built-in views. Supports programmatic navigation. See [Picker views](https://help.syncfusion.com/flutter/daterangepicker/views). ![Multiple picker views Date Range Picker](images/overview/picker_views.png) - -* **Multi-date picker view**: Display two Date Range Pickers side by side, allowing you to select ranges of dates within two separate months easily. - ![Multi date picker view Date Range Picker](images/overview/multi-date-picker.png) +* **Multi-date picker view**: Display two Date Range Pickers side by side, allowing you to select ranges of dates within two separate months easily. See [Multi-date picker view](https://help.syncfusion.com/flutter/daterangepicker/views#multi-date-picker-view). -* **Quick navigation**: Navigate back and forth between date-range views and different view modes. + ![Multi date picker view Date Range Picker](images/overview/multi-date-picker.png) -* **Enable/disable built-in view switching**: Restrict users from navigating to different picker views by disabling view switching. Select values in terms of month, year, or decade with this feature enabled. +* **Quick navigation**: Navigate back and forth between date-range views and different view modes. See [Date navigation](https://help.syncfusion.com/flutter/daterangepicker/date-navigations). - ![Range selection Date Range Picker](images/overview/range-selection.png) +* **Enable/disable built-in view switching**: Restrict users from navigating to different picker views by disabling view switching. With view switching disabled, you can select cells directly in year, decade, and century views. See [Allow view navigation](https://help.syncfusion.com/flutter/daterangepicker/date-navigations#allow-view-navigation). -* **Date selection**: Select single, multiple, and range of dates. It also supports programmatic selection. + ![Range selection Date Range Picker](images/overview/range-selection.png) - ![Date selection Date Range Picker](images/overview/selection_mode.png) +* **Date selection**: Select single, multiple, and range of dates. It also supports programmatic selection. See [Selection](https://help.syncfusion.com/flutter/daterangepicker/selections). -* **Limit the date selection range**: Select only a date range with a specific minimum and maximum number of days (span of days) by setting the minimum and maximum days options. + ![Date selection Date Range Picker](images/overview/selection_mode.png) - ![Limit the date selection range Date Range Picker](images/overview/min_max_date.png) +* **Limit the date selection range**: Select only a date range with a specific minimum and maximum number of days (span of days) by setting the minimum and maximum days options. See [Date restrictions](https://help.syncfusion.com/flutter/daterangepicker/date-restrictions). -* **Change first day of week**: Customize the first day of the week as needed. The default first day is Sunday. + ![Limit the date selection range Date Range Picker](images/overview/min_max_date.png) -* **Blackout dates**: Disable any date to make it inactive in a date range picker. Easily prevent the selection of weekends by disabling them. +* **Change first day of week**: Customize the first day of the week as needed. The default first day is Sunday. See [Customizations](https://help.syncfusion.com/flutter/daterangepicker/customizations). + +* **Blackout dates**: Disable any date to make it inactive in a date range picker. You can easily prevent the selection of weekends by adding them as blackout dates. See [Blackout dates](https://help.syncfusion.com/flutter/daterangepicker/date-restrictions#blackout-dates). ![Blackout dates Date Range Picker](images/overview/blackoutdates.png) -* **Highlight holidays and weekends**: Highlight any date or every weekend in a month as special days using decoration in Flutter date range picker. +* **Highlight holidays and weekends**: Highlight any date or every weekend in a month as special days using decoration in Flutter date range picker. See [Customizations](https://help.syncfusion.com/flutter/daterangepicker/customizations). - ![Highlight holidays and weekends Date Range Picker](images/overview/customization.png) + ![Highlight holidays and weekends Date Range Picker](images/overview/customization.png) -* **Appearance customization**: Change the look and feel of the date range picker by customizing its default appearance and style using Flutter decorations. +* **Appearance customization**: Change the look and feel of the date range picker by customizing its default appearance and style using Flutter decorations. See [Customizations](https://help.syncfusion.com/flutter/daterangepicker/customizations). -* **Right to left (RTL)** - Right-to-left direction support for users working in RTL languages like Hebrew and Arabic. +* **Right to left (RTL)**: Right-to-left direction support for users working in RTL languages like Hebrew and Arabic. See [Right to left](https://help.syncfusion.com/flutter/daterangepicker/right-to-left). - ![Right to left Date Range Picker](images/overview/right_to_left.png) + ![Right to left Date Range Picker](images/overview/right_to_left.png) -* **Accessibility** - Easy access of the date range picker by screen readers. +* **Accessibility**: Easy access of the date range picker by screen readers. See [Accessibility](https://help.syncfusion.com/flutter/daterangepicker/accessibility). -* **Globalization** - Display the current date and time by following the globalized date and time formats. +* **Globalization**: Display the current date and time by following the globalized date and time formats. See [Localization](https://help.syncfusion.com/flutter/daterangepicker/localization). ![Globalization Date Range Picker](images/overview/localization.png) diff --git a/Flutter/DateRangePicker/right-to-left.md b/Flutter/DateRangePicker/right-to-left.md index 6d341aac4..b08f69c7e 100644 --- a/Flutter/DateRangePicker/right-to-left.md +++ b/Flutter/DateRangePicker/right-to-left.md @@ -9,29 +9,42 @@ documentation: ug # Right to Left (RTL) in Flutter Date Range Picker (SfDateRangePicker) -[SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) supports Right to left rendering and all the date picker elements rendering direction will be changed. +[SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) supports right-to-left rendering; all elements will be rendered in the right-to-left direction. ## RTL rendering ways -Right to left rendering can be switched in the following ways: +Right-to-left rendering can be switched in the following ways: ### Wrapping the SfDateRangePicker with Directionality widget The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) supports changing the layout direction of the widget in the right-to-left direction by using the [Directionality](https://api.flutter.dev/flutter/widgets/Directionality-class.html) widget and setting the [textDirection](https://api.flutter.dev/flutter/dart-ui/TextDirection.html) property as [TextDirection.rtl](https://api.flutter.dev/flutter/dart-ui/TextDirection.html#rtl). {% tabs %} -{% highlight dart hl_lines="7 8" %} +{% highlight dart hl_lines="17 18" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar(title: Text('Right to Left')), - body: Directionality( - textDirection: TextDirection.rtl, - child: SfDateRangePicker(view: DateRangePickerView.month), + return MaterialApp( + home: Scaffold( + appBar: AppBar(title: const Text('Right to Left')), + body: Directionality( + textDirection: TextDirection.rtl, + child: SfDateRangePicker(view: DateRangePickerView.month), + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -43,21 +56,32 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic To change the date range picker rendering direction from right to left, change the locale to any of the RTL languages such as Arabic, Persian, Hebrew, Pashto, and Urdu. {% tabs %} -{% highlight dart hl_lines="4 5 6 7 8 9 10 11 12 13" %} +{% highlight dart hl_lines="16 17 18 19 20 21 22 23 24 25" %} + +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( - localizationsDelegates: [ + localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], - supportedLocales: [ + supportedLocales: const [ Locale('en'), Locale('ar'), // ... other locales the app supports ], - locale: Locale('ar'), + locale: const Locale('ar'), home: Scaffold( body: SfDateRangePicker( //... @@ -65,27 +89,11 @@ To change the date range picker rendering direction from right to left, change t ), ); } - +} + {% endhighlight %} {% endtabs %} ## RTL supported date range picker elements -Right to left rendering is supported for all the elements in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). - -{% tabs %} -{% highlight dart hl_lines="7 8" %} - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar(title: Text('Right to Left')), - body: Directionality( - textDirection: TextDirection.rtl, - child: SfDateRangePicker(view: DateRangePickerView.month), - ), - ); - } - -{% endhighlight %} -{% endtabs %} \ No newline at end of file +Right-to-left rendering is supported for all the elements in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). The calendar header, view header, month cells, year/decade/century cells, navigation arrows, today button, and selection view all render in the right-to-left direction. diff --git a/Flutter/DateRangePicker/selections.md b/Flutter/DateRangePicker/selections.md index 1181d5e3e..fef734b72 100644 --- a/Flutter/DateRangePicker/selections.md +++ b/Flutter/DateRangePicker/selections.md @@ -9,26 +9,39 @@ documentation: ug # Flutter Date Range Picker Selections (SfDateRangePicker) -Dates can be selected by touching the month view cells. The default [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is Single that allows the user to select one date at a time. [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) provides support to select dates in five modes such as [Single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single), [Multiple](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiple), [Range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range) [MultiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange) and [ExtendableRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#extendableRange) selection +Dates can be selected by touching the month view cells. The default [selectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionMode.html) is Single that allows the user to select one date at a time. [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html) provides support to select dates in five modes such as [Single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single), [Multiple](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiple), [Range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range), [MultiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange), and [ExtendableRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#extendableRange) selection. The ExtendableRange mode allows you to extend an existing selected range by tapping on a new date. >**NOTE** When the [allowViewNavigation](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/allowViewNavigation.html) property is set to `false`, the Date range picker allows you to select the cells in the year, decade, and century views of date range picker. ## Single selection - A [single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single) date range picker cell can be selected in a date range picker view by setting the [DateRangePickerSelectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html) to [single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single). +A single date can be selected in the date range picker view by setting the [DateRangePickerSelectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html) to [single](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#single). {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.single, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.single, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -48,17 +61,30 @@ Dates can be selected by touching the month view cells. The default [selectionMo You can randomly select more than one date range picker cell by setting the [DateRangePickerSelectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html) to [multiple](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiple). By clicking again you can deselect the selected cells. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.multiple, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.multiple, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -70,17 +96,30 @@ You can randomly select more than one date range picker cell by setting the [Dat You can select a range of cells in any date range picker view by setting the [DateRangePickerSelectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html) to the [range](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#range). {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.range, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.range, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -100,17 +139,30 @@ You can select a range of cells in any date range picker view by setting the [Da You can select more than one range of cells in any of the date range picker views by setting the [DateRangePickerSelectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html) to the [multiRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#multiRange). {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.multiRange, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.multiRange, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -122,7 +174,17 @@ You can select more than one range of cells in any of the date range picker view Extend the selected range with the new selected date in any date range picker view by setting the [DateRangePickerSelectionMode](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html) to [extendableRange](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerSelectionMode.html#extendableRange). {% tabs %} -{% highlight dart hl_lines="7" %} +{% highlight dart hl_lines="15" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -135,6 +197,7 @@ Extend the selected range with the new selected date in any date range picker vi ), ); } +} {% endhighlight %} {% endtabs %} @@ -144,13 +207,23 @@ Extend the selected range with the new selected date in any date range picker vi >**NOTE** * The hovering effect which occurs while extending the range will not be displayed when the `DateRangePickerNavigationMode` is set as `DateRangePickerNavigationMode.scroll`. -## Extendable range selection Direction +## Extendable range selection direction -It allows to extend the selection direction by using the [extendableRangeSelectionDirection](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/extendableRangeSelectionDirection.html) property of the DateRangePicker. -You can set the extendable range selection direction as forward, backward, both and none. +It allows you to extend the selection direction by using the [extendableRangeSelectionDirection](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/extendableRangeSelectionDirection.html) property of the DateRangePicker. +You can set the extendable range selection direction as forward, backward, both and none. See the [ExtendableRangeSelectionDirection](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/ExtendableRangeSelectionDirection.html) enum API reference. {% tabs %} -{% highlight dart hl_lines="8 9" %} +{% highlight dart hl_lines="15 16" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -165,6 +238,7 @@ You can set the extendable range selection direction as forward, backward, both ), ); } +} {% endhighlight %} {% endtabs %} @@ -179,17 +253,30 @@ You can set the extendable range selection direction as forward, backward, both Customize the radius of the selection using the [selectionRadius](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionRadius.html) property of the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionRadius: 10, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionRadius: 10, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -201,17 +288,30 @@ Customize the radius of the selection using the [selectionRadius](https://pub.de You can customize the selection shape of the selected date using the [selectionShape](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/selectionShape.html) property of the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionShape: DateRangePickerSelectionShape.rectangle, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionShape: DateRangePickerSelectionShape.rectangle, + ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -223,20 +323,33 @@ You can customize the selection shape of the selected date using the [selectionS Using the [enableSwipeSelection](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/enableSwipeSelection.html) property of the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html), you can select the dates by using swiping. By default, [enableSwipeSelection](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/enableSwipeSelection.html) property is set to `true`. {% tabs %} -{% highlight dart hl_lines="7 8" %} +{% highlight dart hl_lines="15 16" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - selectionMode: DateRangePickerSelectionMode.range, - monthViewSettings: DateRangePickerMonthViewSettings( - enableSwipeSelection: false, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + selectionMode: DateRangePickerSelectionMode.range, + monthViewSettings: const DateRangePickerMonthViewSettings( + enableSwipeSelection: false, + ), ), ), ); } +} {% endhighlight %} {% endtabs %} @@ -246,17 +359,30 @@ Using the [enableSwipeSelection](https://pub.dev/documentation/syncfusion_flutte You can deselect the selected date using the [toggleDaySelection](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/toggleDaySelection.html) property of the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="14" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - toggleDaySelection: true, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + toggleDaySelection: true, + ), ), ); } +} {% endhighlight %} {% endtabs %} diff --git a/Flutter/DateRangePicker/views.md b/Flutter/DateRangePicker/views.md index f60766970..a11eb9d29 100644 --- a/Flutter/DateRangePicker/views.md +++ b/Flutter/DateRangePicker/views.md @@ -2,7 +2,7 @@ layout: post title: Views in Flutter Date Range Picker widget | Syncfusion description: Learn here all about Views feature of Syncfusion Flutter Date Range Picker (SfDateRangePicker) widget and more. -platform: Flutter +platform: flutter control: SfDateRangePicker documentation: ug --- @@ -16,16 +16,29 @@ The [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepic This view displays the entire dates of a particular month. By default, the current month will be displayed on loading. The current date is provided with a separate color different from the rest of the dates color in `month view`. {% tabs %} -{% highlight dart hl_lines="5" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month - ) + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + ), + ), ); } +} {% endhighlight %} {% endtabs %} @@ -33,11 +46,21 @@ This view displays the entire dates of a particular month. By default, the curre ![Month view Date Range Picker](images/views/monthview.png) -#### Week number +### Week number -Display the Week number of the year in the MonthView by setting the [showWeekNumber](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/showWeekNumber.html) property of the [DateRangePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings-class.html) as true, and by default it is false. Week numbers will be displayed based on the ISO standard. +Display the Week number of the year in the MonthView by setting the [showWeekNumber](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/showWeekNumber.html) property of the [DateRangePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings-class.html) as true, and by default it is false. Week numbers will be displayed based on the ISO 8601 standard. {% tabs %} -{% highlight dart hl_lines="7 8 9" %} +{% highlight dart hl_lines="15 16 17" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -52,18 +75,29 @@ Display the Week number of the year in the MonthView by setting the [showWeekNum ), ); } +} {% endhighlight %} {% endtabs %} -![Week Number in Flutter Date Range Picker](images\views\flutter-date-range-picker-week-number.png) +![Week Number in Flutter Date Range Picker](images/views/flutter-date-range-picker-week-number.png) -#### Week number appearance +### Week number appearance Customize the Week number style by using the [textStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerWeekNumberStyle/textStyle.html) and the [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerWeekNumberStyle/backgroundColor.html) properties of the [DateRangePickerWeekNumberStyle](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerWeekNumberStyle-class.html). {% tabs %} -{% highlight dart hl_lines="8 9 10 11" %} +{% highlight dart hl_lines="16 17 18 19" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -82,6 +116,7 @@ Customize the Week number style by using the [textStyle](https://pub.dev/documen ), ); } +} {% endhighlight %} {% endtabs %} @@ -91,19 +126,32 @@ Customize the Week number style by using the [textStyle](https://pub.dev/documen ## Year view -This displays the entire month of a particular year. By default, the current year will be displayed on loading. Navigate between the months quickly by selecting the particular month in a `year view`. +This displays all months of a particular year. By default, the current year will be displayed on loading. Navigate between the months quickly by selecting the particular month in a `year view`. {% tabs %} -{% highlight dart hl_lines="5" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.year - ) + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.year, + ), + ), ); } +} {% endhighlight %} {% endtabs %} @@ -112,19 +160,32 @@ This displays the entire month of a particular year. By default, the current yea ## Decade view -This view displays the period of 10 years. By default, the current year range of 10 years will be displayed on loading. You can easily navigate between month/year view to decade view by tapping the calendar header. The year can be navigated quickly by selecting a particular year from a `decade view`. +This view displays a period of 10 years. By default, the current year range of 10 years will be displayed on loading. You can easily navigate between month/year view to decade view by tapping the calendar header. The year can be navigated quickly by selecting a particular year from a `decade view`. {% tabs %} -{% highlight dart hl_lines="5" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.decade - ) + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.decade, + ), + ), ); } +} {% endhighlight %} {% endtabs %} @@ -133,19 +194,32 @@ This view displays the period of 10 years. By default, the current year range of ## Century view -This view displays the period of 100 years. By default, the current year range of 100 years will be displayed on loading. You can easily navigate between month/year/decade view to century view by tapping the calendar header. You can easily navigate to a decade view by selecting decade years in `century view`. +This view displays a period of 100 years. By default, the current year range of 100 years will be displayed on loading. You can easily navigate between month/year/decade view to century view by tapping the calendar header. You can easily navigate to a decade view by selecting decade years in `century view`. {% tabs %} -{% highlight dart hl_lines="5" %} +{% highlight dart hl_lines="13" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.century - ) + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.century, + ), + ), ); } +} {% endhighlight %} {% endtabs %} @@ -157,31 +231,54 @@ This view displays the period of 100 years. By default, the current year range o The number of weeks in the month view can be customized by setting the [numberOfWeeksInView](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings/numberOfWeeksInView.html) property of [DateRangePickerMonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerMonthViewSettings-class.html). {% tabs %} -{% highlight dart hl_lines="6 7" %} +{% highlight dart hl_lines="14 15" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - body: SfDateRangePicker( - view: DateRangePickerView.month, - monthViewSettings: DateRangePickerMonthViewSettings( - numberOfWeeksInView: 2, + return MaterialApp( + home: Scaffold( + body: SfDateRangePicker( + view: DateRangePickerView.month, + monthViewSettings: const DateRangePickerMonthViewSettings( + numberOfWeeksInView: 2, + ), ), ), ); } +} {% endhighlight %} {% endtabs %} -![Century view Date Range Picker](images/views/numberofweek-in-view.png) +![Week view Date Range Picker](images/views/numberofweek-in-view.png) ## Multi-date picker view -You can enable a multi-date range picker by using the [enableMultiView](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/enableMultiView.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html), which displays two date range pickers side by side, the space between the two date-range picker can be customized by using the [viewSpacing](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/viewSpacing.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). +You can enable a multi-date range picker by using the [enableMultiView](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/enableMultiView.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html), which displays two date range pickers side by side, the space between the two date-range picker can be customized by using the [viewSpacing](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/viewSpacing.html) property of [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). The default value of `viewSpacing` is `20`. {% tabs %} -{% highlight dart hl_lines="6" %} +{% highlight dart hl_lines="15 16 17 18" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -190,8 +287,8 @@ You can enable a multi-date range picker by using the [enableMultiView](https:// body: SfDateRangePicker( enableMultiView: true, viewSpacing: 20, - headerStyle: DateRangePickerHeaderStyle( - textAlign: TextAlign.center + headerStyle: const DateRangePickerHeaderStyle( + textAlign: TextAlign.center, ), ), ), @@ -205,10 +302,20 @@ You can enable a multi-date range picker by using the [enableMultiView](https:// ## Vertical picker -You can arrange the two date range picker views in the vertical direction by setting the [navigationDirection](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/navigationDirection.html) as [DateRangePickerNavigationDirection.vertical](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerNavigationDirection.html#vertical) in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html).` +You can arrange the two date range picker views in the vertical direction by setting the [navigationDirection](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker/navigationDirection.html) as [DateRangePickerNavigationDirection.vertical](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/DateRangePickerNavigationDirection.html#vertical) in the [SfDateRangePicker](https://pub.dev/documentation/syncfusion_flutter_datepicker/latest/datepicker/SfDateRangePicker-class.html). {% tabs %} -{% highlight dart hl_lines="7" %} +{% highlight dart hl_lines="15" %} + +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -222,6 +329,7 @@ You can arrange the two date range picker views in the vertical direction by set ), ); } +} {% endhighlight %} {% endtabs %} From e0a1a819a627340478e5142593f50cfd13db75a0 Mon Sep 17 00:00:00 2001 From: HarshaMidadhalaKhajareddyMidadhala Date: Mon, 20 Jul 2026 19:56:57 +0530 Subject: [PATCH 2/2] Added images --- .../Adding-code-snippet.png | Bin 0 -> 86423 bytes .../programmatic-range-selection.png | Bin 0 -> 28379 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Flutter/DateRangePicker/how-to/how-to-section-images/Adding-code-snippet.png create mode 100644 Flutter/DateRangePicker/images/date-navigations/programmatic-range-selection.png diff --git a/Flutter/DateRangePicker/how-to/how-to-section-images/Adding-code-snippet.png b/Flutter/DateRangePicker/how-to/how-to-section-images/Adding-code-snippet.png new file mode 100644 index 0000000000000000000000000000000000000000..07ca4e3ec2d5f6c5696060be63c9ad1e1a47b1ee GIT binary patch literal 86423 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