|
1 | | -# switching-views-date-range-picker-flutter |
2 | | -How to switch between the calendar views in Flutter date range picker? |
| 1 | +# How to switch between the date range picker views in Flutter date range picker (SfDateRangePicker)? |
| 2 | + |
| 3 | +In the flutter date range picker, you can navigate between the picker views. Switching between picker views has been achieved using the `view` property of DateRangePickerController and tapping the header of the picker views. |
| 4 | + |
| 5 | +## Step 1: |
| 6 | +In initState(), initialize the controller for date range picker. |
| 7 | + |
| 8 | +```xml |
| 9 | +DateRangePickerController _controller; |
| 10 | + |
| 11 | +@override |
| 12 | +void initState() { |
| 13 | + // TODO: implement initState |
| 14 | + _controller = DateRangePickerController(); |
| 15 | + super.initState(); |
| 16 | +} |
| 17 | +``` |
| 18 | + |
| 19 | + |
| 20 | +## Step 2: |
| 21 | +Navigate between the picker views using the PopupMenuButton widget as follows. Also navigating between the picker views can be achieved by tapping the header of the picker views. |
| 22 | + |
| 23 | +```xml |
| 24 | +leading: PopupMenuButton<String>( |
| 25 | + icon: Icon(Icons.calendar_today), |
| 26 | + itemBuilder: (BuildContext context) => views.map((String choice) { |
| 27 | + return PopupMenuItem<String>( |
| 28 | + value: choice, |
| 29 | + child: Text(choice), |
| 30 | + ); |
| 31 | + }).toList(), |
| 32 | + onSelected: (String value) { |
| 33 | + if (value == 'Month') { |
| 34 | + _controller.view = DateRangePickerView.month; |
| 35 | + } else if (value == 'Year') { |
| 36 | + _controller.view = DateRangePickerView.year; |
| 37 | + } else if (value == 'Decade') { |
| 38 | + _controller.view = DateRangePickerView.decade; |
| 39 | + } else if (value == 'Century') { |
| 40 | + _controller.view = DateRangePickerView.century; |
| 41 | + } |
| 42 | + }, |
| 43 | +), |
| 44 | +``` |
| 45 | +## Step 3: |
| 46 | +Place the calendar inside the body of the Scaffold widget. |
| 47 | + |
| 48 | +```xml |
| 49 | +body: Card( |
| 50 | + margin: const EdgeInsets.fromLTRB(50, 150, 50, 150), |
| 51 | + child: SfDateRangePicker( |
| 52 | + controller: _controller, |
| 53 | + view: DateRangePickerView.month, |
| 54 | + ), |
| 55 | +) |
| 56 | +``` |
0 commit comments