Column子PageView全屏交互
我正在尝试创建一个屏幕,如下所示:
底部是 PageView.builder。我希望它可以通过整个屏幕进行交互。
我想到的第一件事是将它们包装在一个堆栈中,在顶部创建一个不可见的 PageView,并同步底部和不可见(顶部)PageView 的控制器。但是,在这种情况下,按钮不会接收输入。
PS:用 HitTestBehavior.translucent 监听器包裹顶部 PageView 不起作用。我认为 PageView 不允许点击事件传播。
我怎样才能接近这个屏幕?
class Test extends StatelessWidget {
Test({Key? key}) : super(key: key);
final pageController = PageController();
final infoPages = [
Container(
color: Colors.blue[200],
child: Text("info 1"),
),
Container(
color: Colors.blue[400],
child: Text("info 2"),
),
Container(
color: Colors.blue[600],
child: Text("info 3"),
),
];
@override
Widget build(BuildContext context) {
return Column(
children: [
Expanded(
flex: 2,
child: Container(
color: Colors.grey,
child: Text("this is a static image"),
)),
Expanded(
child: TextButton(
onPressed: () {
print("button pressed");
},
child: const Text("This is a static button"),
),
),
Expanded(
flex: 2,
child: PageView.builder(
controller: pageController,
itemCount: infoPages.length,
itemBuilder: ((context, index) {
return infoPages[index];
}),
),
),
],
);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
亲爱的平行宇宙的我;
我通过用堆栈包装它、禁用 PageView 交互并使用 GestureDetector 控制它来解决它。
Dear parallel universe me;
I solved it by wrapping it with a stack, disabling the PageView interaction, and controlling it with a GestureDetector.