尝试通过将它包装在GestureDetector周围而在PageView后面制作小部件,但它不起作用。还有其他方法可以做到这一点吗?
new GestureDetector(
behavior: HitTestBehavior.translucent,
child: new PageView(
controller: _pageController,
children: _buildForegroundPages(),
),
),
答案 0 :(得分:3)
尝试使用IgnorePointer
类:
https://docs.flutter.io/flutter/widgets/IgnorePointer-class.html
在点击测试期间不可见的小部件。
答案 1 :(得分:0)
是的,有可能!就我而言,我只希望在其中一个页面中进行过渡,因此我在该特定页面的构建器中加入了GestureDetector
我想了。但是,它应该对您来说是相同的,但在更高层次上。
return GestureDetector(
// The controller that was passed from the parent
onTap: () => controller.animateToPage(
1,
duration: Duration(milliseconds: 800),
curve: Curves.fastOutSlowIn
),
child: Container(
// Rest of the child
如果您需要一个完整的示例,我也可以将其传递给您。但是我认为这应该足够了。我的方法的问题在于,我必须按索引指定要访问的页面。
此外,如果您要禁用滑动(即,使制表符成为浏览PageView的唯一方法),请考虑将PageView构建器中的physics
设置为NeverScrollableScrollPhysics()
答案 2 :(得分:0)
我就是这样工作的!
首先,将各个孩子包装在要与之交互的GestureDetector中。
第二,将点击测试行为设置为半透明。
PageView(
...
children: [
FirstChild(),
SecondChild(),
//Child that you want gestures passed down to
GestureDetector(
behavior: HitTestBehavior.translucent,
child: GesturedThirdChild(),
),
]