如果符合某一标准,我正试图阻止一种姿态继续下去。
场景是用户正在滑动一个选项卡栏,如果他们转到下一个选项卡,并且条件为真,则应该禁用进一步的滑动。我试图将选项卡条放在一个堆栈中,上面有一个吸收指针容器,但是如果他们不放弃原来的手势(也就是说,他们到达了新的选项卡,但没有从屏幕上松开),它仍然允许他们拖动它。
有什么办法阻止原来的滑动姿势吗?
我找到了这个取消方法,但是我不知道如何访问它。
发布于 2021-03-14 01:18:45
在您的示例中,不需要处理TabBarView之外的手势,只需更改ScrollPhysics即可。
这里有一个代码示例:
final isDisable = ValueNotifier(false);
tabController.animation?.addListener(() {
//The scrolling will be disabled if the second tab is displayed so you can
//add your own logic, may be just checking tabController.index
if (tabController.animation!.value == 1.0) {
isDisable.value = true;
}
});
return Scaffold(
body: ValueListenableBuilder(
valueListenable: isDisable,
builder: (context, bool value, child) => TabBarView(
controller: tabController,
// changing the physics to NeverScrollableScrollPhysics will disable scrolling
physics: value
? NeverScrollableScrollPhysics()
: AlwaysScrollableScrollPhysics(),
children: children,
),
),
);https://stackoverflow.com/questions/66618568
复制相似问题