Commit c8f8d001 authored by Chris Bracken's avatar Chris Bracken Committed by GitHub

Disable DatePicker vibrate on date change on iOS (#8335)

In the Android native material DatePicker, haptic feedback is expected
on date change. This is not expected behaviour for iOS date/time
pickers.
parent 72fa281f
...@@ -591,6 +591,8 @@ class _DatePickerDialog extends StatefulWidget { ...@@ -591,6 +591,8 @@ class _DatePickerDialog extends StatefulWidget {
} }
class _DatePickerDialogState extends State<_DatePickerDialog> { class _DatePickerDialogState extends State<_DatePickerDialog> {
bool _vibrate = false;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
...@@ -602,14 +604,16 @@ class _DatePickerDialogState extends State<_DatePickerDialog> { ...@@ -602,14 +604,16 @@ class _DatePickerDialogState extends State<_DatePickerDialog> {
GlobalKey _pickerKey = new GlobalKey(); GlobalKey _pickerKey = new GlobalKey();
void _handleModeChanged(_DatePickerMode mode) { void _handleModeChanged(_DatePickerMode mode) {
HapticFeedback.vibrate(); if (_vibrate)
HapticFeedback.vibrate();
setState(() { setState(() {
_mode = mode; _mode = mode;
}); });
} }
void _handleYearChanged(DateTime value) { void _handleYearChanged(DateTime value) {
HapticFeedback.vibrate(); if (_vibrate)
HapticFeedback.vibrate();
setState(() { setState(() {
_mode = _DatePickerMode.day; _mode = _DatePickerMode.day;
_selectedDate = value; _selectedDate = value;
...@@ -617,7 +621,8 @@ class _DatePickerDialogState extends State<_DatePickerDialog> { ...@@ -617,7 +621,8 @@ class _DatePickerDialogState extends State<_DatePickerDialog> {
} }
void _handleDayChanged(DateTime value) { void _handleDayChanged(DateTime value) {
HapticFeedback.vibrate(); if (_vibrate)
HapticFeedback.vibrate();
setState(() { setState(() {
_selectedDate = value; _selectedDate = value;
}); });
...@@ -657,6 +662,15 @@ class _DatePickerDialogState extends State<_DatePickerDialog> { ...@@ -657,6 +662,15 @@ class _DatePickerDialogState extends State<_DatePickerDialog> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
switch (Theme.of(context).platform) {
case TargetPlatform.android:
case TargetPlatform.fuchsia:
_vibrate = true;
break;
case TargetPlatform.iOS:
_vibrate = false;
break;
}
Widget picker = new Flexible( Widget picker = new Flexible(
child: new SizedBox( child: new SizedBox(
height: _kMaxDayPickerHeight, height: _kMaxDayPickerHeight,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment