【问题标题】:widget behind Scaffold脚手架后面的小部件
【发布时间】:2019-10-10 20:25:54
【问题描述】:

我在 Scaffold 后面有一个 Widget,我通过将 Scaffold 的 backgroundColor 设置为透明来使其可见。

但是,Scaffold 仍然吸收指针事件,但我希望背景小部件消耗指针事件。

编辑:

我不能将小部件放在脚手架中,因为它是一个平台小部件(地图视图),我必须确保它在整个应用程序中是同一个实例,否则会发生有趣的事情......另外,页面转换应该发生在小部件的前面。

【问题讨论】:

  • 您可以只将该 Widget 置于 Scaffold 中不可见并通过事件使其可见,而不是使 Scaffold 透明。
  • 请看我的编辑
  • 你背后的这个地图视图小部件是静态的,或者你在使用应用程序时更改它?
  • 它是静态的,我在 MaterialApp 构建器中创建了一个堆栈,以将地图放在主小部件后面。正如我在回答中所写,我用一种“洞”小部件解决了这个问题。

标签: flutter


【解决方案1】:

我用两个 SingleChildRenderObjectWidgets 解决了问题。

一个称为“孔”,只是小部件树中的一个标记。另一个称为“Sieve”,如果在其下方击中了一个 Hole,则会在其 hitTest 中检查。

如果一个 Hole 被击中,hitTest 将被忽略。

完美运行!

【讨论】:

  • 您能否分享一个最小的代码示例来说明您的答案?我遇到了类似的问题,但我不明白你的答案。
【解决方案2】:
IgnorePointer(
  ignoring: true,
  child: Scaffold(
    ...
  ),
);

【讨论】:

  • 但这会使整个 Scaffold 忽略指针,因此 AppBar 或 body 也不会收到指针事件。
  • 这是一种解决方法。您可以放置​​一些将 IgnorePointer 状态设置为 True 并将 Scaffold 状态设置为透明的按钮,这样您就可以使用 Scaffold 应用程序,并且无论何时您想忽略它,都可以点击该按钮。
猜你喜欢
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 2023-01-31
  • 2020-05-26
  • 2021-07-20
  • 1970-01-01
  • 2021-06-20
  • 2012-07-03
相关资源
最近更新 更多