diff --git a/lib/ui/dashboard/dashboard_screen.dart b/lib/ui/dashboard/dashboard_screen.dart index 12ced2944..fee615254 100644 --- a/lib/ui/dashboard/dashboard_screen.dart +++ b/lib/ui/dashboard/dashboard_screen.dart @@ -62,17 +62,23 @@ class _DashboardScreenState extends State final offsetIndex = ((offset + 120) / kDashboardPanelHeight).floor(); if (_sideTabController.index != offsetIndex) { + _sideTabController.removeListener(onTabListener); _sideTabController.index = offsetIndex; + _sideTabController.addListener(onTabListener); - // This causes a bit of jank - //widget.viewModel.onEntityTypeChanged(_tabs[offsetIndex]); + widget.viewModel.onEntityTypeChanged(_tabs[offsetIndex]); } } void onTabListener() { final index = _sideTabController.index; - _scrollController.jumpTo((index.toDouble() * kDashboardPanelHeight) + 1); - widget.viewModel.onEntityTypeChanged(_tabs[index]); + final offset = _scrollController.position.pixels; + final offsetIndex = ((offset + 120) / kDashboardPanelHeight).floor(); + + if (index != offsetIndex) { + _scrollController.jumpTo((index.toDouble() * kDashboardPanelHeight) + 1); + widget.viewModel.onEntityTypeChanged(_tabs[index]); + } } @override