Repository: flutter
Issue: Allow ButtonStyleButton to react on onTapDown event
Labels: c: new feature,framework,f: material design,c: proposal,P3,team-design,triaged-design

### Is there an existing issue for this?

- [X] I have searched the [existing issues](https://github.com/flutter/flutter/issues)
- [X] I have read the [guide to filing a bug](https://flutter.dev/docs/resources/bug-reports)

### Use case

I'm using Flutter on embedded devices and I discovered, that `onPressed` is not sufficient enough in terms of responsivenes.
`onTapDown` fills this gap, but unfortunatelly `ButtonStyleButton` doesn't allow to utilise it.
Could you please add `onTapDown` to `ButtonStyleButton`?

### Proposal

```dart
diff --git a/packages/flutter/lib/src/material/button_style_button.dart b/packages/flutter/lib/src/material/button_style_button.dart
index 9155e49ef6..acbc5249aa 100644
--- a/packages/flutter/lib/src/material/button_style_button.dart
+++ b/packages/flutter/lib/src/material/button_style_button.dart
@@ -35,6 +35,7 @@ abstract class ButtonStyleButton extends StatefulWidget {
     super.key,
     required this.onPressed,
     required this.onLongPress,
+    this.onTapDown,
     required this.onHover,
     required this.onFocusChange,
     required this.style,
@@ -48,7 +49,7 @@ abstract class ButtonStyleButton extends StatefulWidget {

   /// Called when the button is tapped or otherwise activated.
   ///
-  /// If this callback and [onLongPress] are null, then the button will be disabled.
+  /// If this callback and [onLongPress] and [onTapDown] are null, then the button will be disabled.
   ///
   /// See also:
   ///
@@ -57,13 +58,22 @@ abstract class ButtonStyleButton extends StatefulWidget {

   /// Called when the button is long-pressed.
   ///
-  /// If this callback and [onPressed] are null, then the button will be disabled.
+  /// If this callback and [onPressed] and [onTapDown] are null, then the button will be disabled.
   ///
   /// See also:
   ///
   ///  * [enabled], which is true if the button is enabled.
   final VoidCallback? onLongPress;

+  /// Called when the button is tapped-down.
+  ///
+  /// If this callback and [onPressed] and [onLongPress] are null, then the button will be disabled.
+  ///
+  /// See also:
+  ///
+  ///  * [enabled], which is true if the button is enabled.
+  final VoidCallback? onTapDown;
+
   /// Called when a pointer enters or exits the button response area.
   ///
   /// The value passed to the callback is true if a pointer has entered this
@@ -151,8 +161,8 @@ abstract class ButtonStyleButton extends StatefulWidget {
   /// Whether the button is enabled or disabled.
   ///
   /// Buttons are disabled by default. To enable a button, set its [onPressed]
-  /// or [onLongPress] properties to a non-null value.
-  bool get enabled => onPressed != null || onLongPress != null;
+  /// or [onLongPress] or [onTapDown] properties to a non-null value.
+  bool get enabled => onPressed != null || onLongPress != null || onTapDown != null;
   @override
   State<ButtonStyleButton> createState() => _ButtonStyleState();
@@ -392,6 +402,7 @@ class _ButtonStyleState extends State<ButtonStyleButton> with TickerProviderStat
         child: InkWell(
           onTap: widget.onPressed,
           onLongPress: widget.onLongPress,
+          onTapDown: widget.onTapDown,
           onHover: widget.onHover,
           mouseCursor: mouseCursor,
           enableFeedback: resolvedEnableFeedback,
```