Display the progress and a stop button while downloading

After the fetchingDownload phase is the downloading phase.
During the downloading phase, the DownloadButton
replaces the radial progress spinner with a growing
radial progress bar. The DownloadButton also displays a stop 
button icon so that the user can cancel an in-progress download.

Add a progress property to the DownloadButton widget,
and then update the progress display to switch to a radial
progress bar during the downloading phase.

Next, add a stop button icon at the center of the
radial progress bar.

Add button tap callbacks

The last detail that your DownloadButton needs is the
button behavior. The button must do things when the user taps it.

Add widget properties for callbacks to start a download,
cancel a download, and open a download.

Finally, wrap DownloadButton’s existing widget tree
with a GestureDetector widget, and forward the
tap event to the corresponding callback property.