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.
This commit is contained in:
Chris Bracken 2017-02-22 12:03:57 -08:00 committed by GitHub
parent 72fa281f12
commit c8f8d0014a

View File

@ -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> {
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> {
} }
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> {
@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,