我有一个Flutter 应用程序,我正在try 创建一个动画按钮交互.当我点击第一个按钮时,第二个按钮应该从左边滑到第一个按钮的下面.动画按预期工作,但问题是,当第二个按钮部分位于堆栈之外时,无法单击.为了更好地理解,请参考这份GIF.

enter image description here

白色矩形附近的小区域(靠近右上角和右下角)是可单击的,因为它不在堆栈之外.你可以用这working example on DartPad.

我正在使用将clipBehavior设置为Clip.none的Stack,以允许按钮溢出Stack.我已经try 了GestureDetector behaviorHitTestBehavior.translucent,然而,Stack外出现第二个按钮的区域对touch 事件没有响应.

我想让第二个按钮即使在堆栈之外也可以点击.我如何才能做到这一点呢?如有任何指导或建议,我们将不胜感激.

推荐答案

我不确定这是否适用于您的情况,因为您在这里处理动画,但它应该是相同的:

堆栈使用RenderBox,它判断点击是否在堆栈的边界之外.

使用DeferPointer小部件https://pub.dev/packages/defer_pointer

通常在Flutter 中,如果您将小部件偏移到其父级之外 命中测试的界限将被打破.DeferPointer通过以下方式解决此问题 将命中测试和(可选)呈现传递给 树上更靠上的DeferredPointerHandler小部件.

Flutter相关问答推荐

如何处理Flutter Riverpod异步通知器中的状态和数据库

Flutter 翼future 建造者不断开火和重建.它在每次重建时都会生成一个新的随机数--我如何防止这种情况?

Flutter 块消费者仅对特定的状态属性更改做出react

在Dart中使用Riverpod代码生成时出现问题(addListener)

如何在Flutter中将背景 colored颜色 更改为黑色?

使用 forLoops 在 Dart 中进行单元测试会返回 stackoverflow

如何在Flutter 中使用选定的键和值从 map 列表创建 map

Flutter / 为什么当我点击我的图片时我的模型没有更新?

我怎样才能消除我的 Column 子元素之间的差距?

如何使这种相机叠加在Flutter 中?

如何在 GridView.builder 中设置 textform 字段并在 flutter 中将 12 个 textformfield 作为单个字符串获取?

如何根据字符串值动态构建和显示小部件?

Flutter 如何使用 ClipPath 编辑容器的顶部?

如何验证非表单字段?

我正在try 使用 Firebase 在 Flutter 中使用 Google 注销,但它不起作用

如何在 SingleChildScrollView 小部件中管理自定义小部件状态

构建失败 - 无法解析 io.grpc:grpc-core:[1.28.0]. (是的,我已经升级到 mavenCentral())

如何将所有行项目平等地放在一行中?Flutter

从 Uint8List 或图像对象创建 InputImageData 用于 Google ML Kit 人脸检测

Flutter 在滚动期间保持某些元素固定?