@protected bool get loading => _loading;
@protected set loading(bool loading) { if (!mounted) return; setState(() { _loading = loading; }); }