颤动:是否可以点击PageView?

时间:2018-03-27 10:37:52

标签: dart flutter

尝试通过将它包装在GestureDetector周围而在PageView后面制作小部件,但它不起作用。还有其他方法可以做到这一点吗?

         new GestureDetector(
            behavior: HitTestBehavior.translucent,
            child: new PageView(
              controller: _pageController,
              children: _buildForegroundPages(),
            ),
          ),

3 个答案:

答案 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(),
   ),
  ]
相关问题