Feedback class

Provides platform-specific acoustic and/or haptic feedback for certain actions.

For example, to play the Android-typically click sound when a button is tapped, call forTap. For the Android-specific vibration when long pressing an element, call forLongPress. Alternatively, you can also wrap your GestureDetector.onTap or GestureDetector.onLongPress callback in wrapForTap or wrapForLongPress to achieve the same (see example code below).

Calling any of these methods is a no-op on iOS as actions on that platform typically don't provide haptic or acoustic feedback.

All methods in this class are usually called from within a StatelessWidget.build method or from a State's methods as you have to provide a BuildContext.

To trigger platform-specific feedback before executing the actual callback:
class WidgetWithWrappedHandler extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: Feedback.wrapForTap(_onTapHandler, context),
      onLongPress: Feedback.wrapForLongPress(_onLongPressHandler, context),
      child: const Text('X'),
    );
  }

  void _onTapHandler() {
    // Respond to tap.
  }

  void _onLongPressHandler() {
    // Respond to long press.
  }
}

Alternatively, you can also call forTap or forLongPress directly within your tap or long press handler:
class WidgetWithExplicitCall extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        // Do some work (e.g. check if the tap is valid)
        Feedback.forTap(context);
        // Do more work (e.g. respond to the tap)
      },
      onLongPress: () {
        // Do some work (e.g. check if the long press is valid)
        Feedback.forLongPress(context);
        // Do more work (e.g. respond to the long press)
      },
      child: const Text('X'),
    );
  }
}

Properties

hashCode int
The hash code for this object. [...]
read-only, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
toString() String
Returns a string representation of this object.
inherited

Operators

operator ==(dynamic other) bool
The equality operator. [...]
inherited

Static Methods

forLongPress(BuildContext context) Future<void>
Provides platform-specific feedback for a long press. [...]
forTap(BuildContext context) Future<void>
Provides platform-specific feedback for a tap. [...]
wrapForLongPress(GestureLongPressCallback callback, BuildContext context) GestureLongPressCallback
Wraps a GestureLongPressCallback to provide platform specific feedback for a long press before the provided callback is executed. [...]
wrapForTap(GestureTapCallback callback, BuildContext context) GestureTapCallback
Wraps a GestureTapCallback to provide platform specific feedback for a tap before the provided callback is executed. [...]