Generally the use of GestureDetector is discouraged in favor of InkWell
unless you have a very specific reason to use it. InkWells automatically
generate ripple effects if there is a parent material widget in the tree
to indicate to a user that a given widget is interactible.
When using the BuildContext after an asynchronus gap (like when using
await), you always need to check if the context is still mounted before
using it to retrieve objects from the widget tree like with
`ScaffoldMessenger.of(context)`.
Additionally you don't need to use
`.then((value) {})` on a future, if that future is already awaited, you
can simply put any following statements on a new line for better
readability of program flow.