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