首页 > 解决方案 > Flutter如何防止在PageView中的特定区域滚动

问题描述

我有一个带有标签栏作为标题和页面浏览作为正文的页面。我面临的问题是由于 PageView 是可滚动的,并且其中一个页面需要进行签名,当我拖动以在签名小部件上绘图时,它会使整个 PageView 滚动。有没有办法在绘制签名时停止页面浏览滚动?就像停止手势传递给父小部件一样?

谢谢

在此处输入图像描述

我的简单示例代码:

  return Scaffold(
        key: _scaffoldKey,
        appBar: AppBar(
          bottom: ColoredTabBar(
            tabBarBackgroundColor,
            TabBar(
                isScrollable: true,
                controller: _tabController,
                tabs: _tabsInfo.map((EditSafetyPlanTab tabInfo) {
                    return Tab(
                    text: tabInfo.label,
                    );
                }).toList()),
          ),
        ),
        body: PageView.builder(
          controller: _pageController,
          onPageChanged: (index) {
            if (isPageCanChanged) {
            onPageChange(index);
            }
          },
          itemCount: _tabsInfo.length,
          itemBuilder: (context, index) => buildPage(index, _tabsInfo),
        ),
       );

标签: flutterscrollpageviews

解决方案


您可以使用以下behavior属性GestureDetector

GestureDetector(
   behavior: HitTestBehavior.opaque,
   onTap: () { ... },
)

推荐阅读