【发布时间】:2020-10-11 09:01:56
【问题描述】:
对 Flutter 完全陌生,不到 10 小时。
我有一个处理 3 页的 PageView,它可以完美地水平滚动。
但我想更改“允许滑动”区域。我不想让用户更改从页面的任何位置滚动的页面,而是,例如,如果他在 AppBar 组件上滑动,就让他滚动页面。
我看到 PageView 有 applyTo 方法,我只是不知道如何给它 ID(keys) 或 appBar 看看这是否可行。
有没有办法实现这种“只有当用户在组件 X 上滑动时才滚动”?
编辑 1
Alberto Miola 建议的解决方案就像一个魅力,这是我的代码(我必须从 PreferredSizeWidget 实现,因为需要修改 AppBar)。
class GestureDetectorForAppBar extends StatelessWidget implements PreferredSizeWidget {
final double height;
final AppBar appbar;
final GestureDragUpdateCallback onPanUpdate;
GestureDetectorForAppBar({
Key key,
this.appbar,
this.onPanUpdate,
@required this.height,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return GestureDetector(child: this.appbar, onPanUpdate: this.onPanUpdate,);
}
@override
Size get preferredSize => Size.fromHeight(height);
}
【问题讨论】:
标签: flutter scroll flutter-pageview