tree wide: check if build context is still valid after async call
> Storing BuildContext for later usage can easily lead to difficult
> to diagnose crashes. Asynchronous gaps are implicitly storing
> BuildContext and are some of the easiest to overlook when writing
> code.
>
> When a BuildContext is used, a mounted property must be checked
> after an asynchronous gap, depending on how the BuildContext is
> accessed:
>
> * When using a State's context property, the State's mounted
> property must be checked.
> * For other BuildContext instances (like a local variable or
> function argument), the BuildContext's mounted property must be
> checked.