gpt4 book ai didi

flutter - 在 Stack 中将点击事件传递给后面的 child

转载 作者:行者123 更新时间:2023-12-05 05:03:56 38 4
gpt4 key购买 nike

在观看了有关在 Flutter 中创建自定义 PageView 的教程视频后,我遇到了一个问题。为了实现自定义 PageView 的页面位置,我使用了一堆项目,这些项目根据放置在 Stack.fill() 中的 PageView 向左/向右滑动,位于 Stack 中所有其他元素之上。

代码示例如下:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Home(),
);
}
}

class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Test')),
body: Container(
height: 200.0,
child: Stack(
children: <Widget>[
Container(
color: Colors.blueGrey,
width: double.infinity,
height: double.infinity,
child: Material(
type: MaterialType.transparency,
child: InkWell(
onTap: () {
print('InkWell tapped');
},
),
),
),
Positioned.fill(
child: PageView.builder(
itemBuilder: (context, index) {
return Container(
child: Center(
child: Text(
'$index',
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
),
),
),
);
},
itemCount: 4,
),
),
],
),
),
);
}
}

问题是我想在 PageView 后面的 InkWell 上触发 Tap 事件,同时仍然能够滑动 PageView。

是否可以将点击事件传递给 PageView 后面的元素?谢谢。


编辑:

由于您不应该在 flutter 中扩展小部件,因此我刚刚制作了一个使用 HitTestBehavior.translucent 而不是 HitTestBehavior.opaque 的 Scrollable 类的副本。之后,您使用这个新的 Scrollable 创建了一个 PageView 的副本。

通过这样的修改 - PageView 后面的子级开始接收手势。

最佳答案

解决方案:

由于您不应该在 flutter 中扩展小部件,因此我刚刚制作了一个使用 HitTestBehavior.translucent 而不是 HitTestBehavior.opaque 的 Scrollable 类的副本。之后,您使用这个新的 Scrollable 创建了一个 PageView 的副本。

通过这样的修改 - PageView 后面的子级开始接收手势。

关于flutter - 在 Stack 中将点击事件传递给后面的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61413501/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com