Add 30-second debounce to tab refresh in HomeShell
Co-authored-by: derkauzigekoala <79001016+derkauzigekoala@users.noreply.github.com>
This commit is contained in:
parent
44951de8f5
commit
b9e298851b
1 changed files with 7 additions and 2 deletions
|
|
@ -15,6 +15,8 @@ class _HomeShellState extends State<HomeShell> {
|
||||||
int _currentIndex = 0;
|
int _currentIndex = 0;
|
||||||
final _collectionsKey = GlobalKey<CollectionsScreenState>();
|
final _collectionsKey = GlobalKey<CollectionsScreenState>();
|
||||||
final _scanKey = GlobalKey<ScanTabState>();
|
final _scanKey = GlobalKey<ScanTabState>();
|
||||||
|
final Map<int, DateTime> _lastRefreshed = {};
|
||||||
|
static const _refreshDebounce = Duration(seconds: 30);
|
||||||
|
|
||||||
late final List<Widget> _pages = <Widget>[
|
late final List<Widget> _pages = <Widget>[
|
||||||
CollectionsScreen(key: _collectionsKey),
|
CollectionsScreen(key: _collectionsKey),
|
||||||
|
|
@ -24,10 +26,13 @@ class _HomeShellState extends State<HomeShell> {
|
||||||
|
|
||||||
void _onTabSelected(int i) {
|
void _onTabSelected(int i) {
|
||||||
setState(() => _currentIndex = i);
|
setState(() => _currentIndex = i);
|
||||||
|
final now = DateTime.now();
|
||||||
|
final last = _lastRefreshed[i];
|
||||||
|
if (last != null && now.difference(last) < _refreshDebounce) return;
|
||||||
|
_lastRefreshed[i] = now;
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
_collectionsKey.currentState?.refresh();
|
_collectionsKey.currentState?.refresh();
|
||||||
}
|
} else if (i == 1) {
|
||||||
if (i == 1) {
|
|
||||||
_scanKey.currentState?.refresh();
|
_scanKey.currentState?.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue