我有一个TabBar,有4个Tabs。如果任一选项卡的内容是空的,我希望该选项卡获得一个“禁用”状态,无论是onTap和滑动。
我已经设法禁用onTap,但还没有能够“跳过”选项卡,如果它被禁用。
例如:如果Ready
下没有列表,我想在滑动时从**InProgress
跳到Archived
******************************************************************************************************************************************************************************************************************
void onTap(int index) {
if (disabledTabIndex != null) {
setState(() {
_controller.index = index == disabledTabIndex
? _controller.previousIndex
: index;
});
}
}
TabBar(
tabs: [
Tab("Show all"),
Tab("InProgress"),
Tab("Ready"),
Tab("Archived"),
],
onTap: (int index) => onTap(index),
controller: _controller,
),
TabBarView(
controller: controller,
children: [
CustomListView(list: unfilteredList),
CustomListView(list: filteredListByInProgress),
CustomListView(list: filteredListByReady),
CustomListView(list: filteredListByArchived),
],
),
我已经将NeverScrollableScrollPhysics()
添加到TabBarView
中,但这将完全禁用滑动**。这不是我想要的结果。我只想**跳过内容。
TabBarView(
controller: controller,
physics: controller.index == disabledTabIndex ? NeverScrollableScrollPhysics() : null,
children: [
CustomListView(list: unfilteredList),
CustomListView(list: filteredListByInProgress),
CustomListView(list: filteredListByReady),
CustomListView(list: filteredListByArchived),
],
),
1条答案
按热度按时间0ve6wy6x1#
尝试用
GestureDetector
或InkWell
重构你的标签,并将你的funconTap
给他们。