Add widgets to display text during each download phase,
and animate the text’s opacity in between. Add the text
widget tree as a child of the AnimatedContainer in the
button wrapper widget.

Display a spinner while fetching download

During the fetchingDownload phase, the DownloadButton
displays a radial spinner. This spinner fades in from
the notDownloaded phase and fades out to 
the fetchingDownload phase.

Implement a radial spinner that sits on top of the button
shape and fades in and out at the appropriate times.

We have removed the ButtonShapeWidget’s constructor to keep the
focus on its build method and the Stack widget we’ve added.

Display the progress and a stop button while downloading