Repository: flutter
Issue: Add property to `DragTarget` to change appearance when a `Draggable` is dragged but not necessarily near the `DragTarget`
Labels: c: new feature,framework,f: material design,c: proposal,a: desktop,P3,team-framework,triaged-framework

<!-- Thank you for using Flutter!

     If you are looking for support, please check out our documentation
     or consider asking a question on Stack Overflow:
      * https://flutter.dev/
      * https://api.flutter.dev/
      * https://stackoverflow.com/questions/tagged/flutter?sort=frequent

     If you have found a bug or if our documentation doesn't have an answer
     to what you're looking for, then fill out the template below. Please read
     our guide to filing a bug first: https://flutter.dev/docs/resources/bug-reports
-->

## Use case

<!--
     Please tell us the problem you are running into that led to you wanting
     a new feature.

     Is your feature request related to a problem? Please give a clear and
     concise description of what the problem is.

     Describe the alternative solutions you've considered. Is there a package
     on pub.dev/flutter that already solves this?
-->

Right now, the [`DragTarget`](https://api.flutter.dev/flutter/widgets/DragTarget-class.html) class has the relevant properties:

* [`onMove`](https://api.flutter.dev/flutter/widgets/DragTarget/onMove.html): Called when a `Draggable` moves within this `DragTarget`.

* [`onWillAccept`](https://api.flutter.dev/flutter/widgets/DragTarget/onWillAccept.html): Called to determine whether this widget is interested in receiving a given piece of data being dragged over this drag target.


However, these two only get initiated when a [`Draggable`](https://api.flutter.dev/flutter/widgets/Draggable-class.html) moves "within" or "over" the drag target. This is okay, but it is somewhat mobile focused, where there is not much room for a lot of drag targets. On desktop and in certain applications, one might imagine there being several `DragTarget`s for a given `Draggable`.

For example, consider a board game where a player picks up, i.e. drags, a pawn represented by a `Draggable`. In such a case, the application might want to highlight the various options on the board, represented by `DragTarget`s, where the pawn can be placed, *before* the pawn is moved within or over the acceptable places.

Right now, this has to be handled implicitly outside of the `Draggable` and `DragTarget` classes, as far as I can tell.

An image to hopefully communicate a potential use case:

![image](https://user-images.githubusercontent.com/65685447/215252279-d1f3eb07-bd01-4deb-af20-75f1cc256378.png)

The user initiates a drag on the red checker that gets highlighted with green, and then the various acceptable drop locations get highlighted in blue, before the checker is placed over the acceptable squares.

## Proposal

<!--
     Briefly but precisely describe what you would like Flutter to be able to do.

     Consider attaching something showing what you are imagining:
      * images
      * videos
      * code samples

     Does this have to be provided by Flutter directly, or can it be provided
     by a package on pub.dev/flutter? If so, maybe consider implementing and
     publishing such a package rather than filing a bug.
-->

The proposal is to either modify the existing properties to be more generic, passing through both the draggable type and a flag whether the draggable is within or over the drag target or coordinates, *or* add a new property (the more backwards compatible way) to configure the behavior for any draggable being dragged anywhere within the window or application (in the case of a multi-window application).

It isn't entirely clear to me what the name should be because the names are actually already relevant. I think `onWillAccept` is the perfect name, but unfortunately the current implementation only triggers when the data is dragged over the drag target. Maybe `onWillAcceptDraggable` or `onWillAcceptGlobal` or `onWillAcceptAny`?

(Apologies for perhaps imprecise language. I am new to Flutter and Dart, so I probably am abusing some nomenclature surrounding properties.)