Manages the _highlight state.

The GestureDetector listens to all tap events.
As the user taps down, it adds the highlight
(implemented as a dark green border). As the user releases the
tap, it removes the highlight.

Calls setState() to update the UI on tap down,
tap up, or tap cancel, and the _highlight state changes.

On a tap event, passes that state change to the parent widget to take
appropriate action using the widget property.

An alternate implementation might have exported the highlight
state to the parent while keeping the active state internal,
but if you asked someone to use that tap box,
they’d probably complain that it doesn’t make much sense.
The developer cares whether the box is active.
The developer probably doesn’t care how the highlighting
is managed, and prefers that the tap box handles those
details.

Other interactive widgets