From 839be76b8f890919be69c36a8ae56f5672508df8 Mon Sep 17 00:00:00 2001 From: 21pages Date: Tue, 30 Aug 2022 14:43:57 +0800 Subject: [PATCH] tabbar: check before scroll Signed-off-by: 21pages --- flutter/lib/desktop/widgets/tabbar_widget.dart | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index 6e0ce747d..aea90c868 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -64,6 +64,7 @@ class DesktopTabController { state.update((val) { val!.tabs.add(tab); }); + state.value.scrollController.itemCount = state.value.tabs.length; toIndex = state.value.tabs.length - 1; assert(toIndex >= 0); } @@ -96,8 +97,16 @@ class DesktopTabController { void jumpTo(int index) { state.update((val) { val!.selected = index; - val.pageController.jumpToPage(index); - val.scrollController.scrollToItem(index, center: true, animate: true); + Future.delayed(Duration.zero, (() { + if (val.pageController.hasClients) { + val.pageController.jumpToPage(index); + } + if (val.scrollController.hasClients && + val.scrollController.canScroll && + val.scrollController.itemCount >= index) { + val.scrollController.scrollToItem(index, center: true, animate: true); + } + })); }); onSelected?.call(index); }