颤动:忽略Widget上的触摸事件

Moh*_*med 20 dart flutter

从iOS开发与正在添加快捷我能够提出具有跨期模态溶解的动画和清晰的背景显示是什么当前视图后面,将其模糊化,仿佛像一个弹出窗口,我怎么能在颤振实现这一目标?我使用Fluro导航到下一个视图,淡入过渡效果,但当我将容器和材质小部件颜色更改为透明时,背景为黑色.

我如何导航到下一页:

__PRE__

过滤页面代码:

__PRE__

**更新**

我得到了我的目标,但是有一个很大的问题.我将过滤器小部件和主容器小部件放在一个__CODE__小部件中,将过滤器小部件置于顶部,但最初的不透明度为0.我想要的效果完美但现在我无法与它下面的小部件进行交互,因为它完全覆盖了另一个小部件......

码:

__PRE__

cre*_*not 49

你可以解决你的问题的互动(不能够与互动Widget下方的模糊图像)的周围BackdropFilterIgnorePointer.

这意味着这IgnorePointer解决方案,因为它将忽略Widget作为其子传递的所有触摸事件.

IgnorePointer(child: BackdropFilter(...),)
Run Code Online (Sandbox Code Playgroud)

您可以通过更改以下bool值来调整此属性ignoring:

IgnorePointer(ignoring: false, ...)
Run Code Online (Sandbox Code Playgroud)

这将再次启用所有触摸事件.

吸收

这里有一些有趣的东西,但与问题无关,可用于反映其子项发生的所有触摸事件.AbsorbPointer Widget


Cop*_*oad 10

您可以使用IgnorePointerAbsorbPointer

范例(IgnorePointer

IgnorePointer(
  child: RaisedButton(
    onPressed: () {},
    child: Text("Unclickable button"),
  ),
);
Run Code Online (Sandbox Code Playgroud)

范例(AbsorbPointer

AbsorbPointer(
  child: RaisedButton(
    onPressed: () {},
    child: Text("Unclickable button"),
  ),
);
Run Code Online (Sandbox Code Playgroud)

有什么不同?

如果您的主窗口小部件下面有一个也可以接收点击事件IgnorePointer的窗口小部件,并且您在父窗口小部件上使用,则子窗口小部件仍将接收点击事件。

但是AbsorbPointer在主窗口小部件上使用将不允许其他窗口小部件(在主窗口小部件下方)接收其点击事件。

显示差异的示例。

@override
Widget build(BuildContext context) {
  return SizedBox(
    width: double.infinity,
    child: Stack(
      children: <Widget>[
        Positioned(
          left: 0,
          width: 250,
          child: RaisedButton(
            color: Colors.red,
            onPressed: () => print("Button 1"),
            child: Text("Button 1"),
          ),
        ),
        Positioned(
          right: 0,
          width: 250,
          child: IgnorePointer( // replace this with AbsorbPointer and button 1 won't receive click
            child: RaisedButton(
              onPressed: () => print("Button 2"),
              child: Text("Button 2"),
            ),
          ),
        ),
      ],
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)