setStateSafe method
Calls setState only if the widget is currently mounted.
This prevents "setState() called after dispose()" errors.
Implementation
void setStateSafe(VoidCallback fn) {
if (mounted) {
// ignore: invalid_use_of_protected_member
setState(fn);
}
}