Flutter:ClipPath() 小部件中的断言失败错误

Posted

技术标签:

【中文标题】Flutter:ClipPath() 小部件中的断言失败错误【英文标题】:Flutter: Assertion failed error in ClipPath() widget 【发布时间】:2020-11-23 13:23:15 【问题描述】:

我收到了这个错误。

Assertion failed: org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/surface/path/path_ref.dart:831:12
isValid
is not true

The relevant error-causing widget was
    ClipPath

我使用的依赖是:flutter_custom_clippers: ^1.1.1

每当我重新启动或进行热刷新时,UI 都会正确构建,但几秒钟后我在调试控制台中收到此错误。

以下是我的小部件结构。

ClipPath(
      clipper: WaveClipperTwo(flip: true, reverse: true),
      child: Container(
        padding: EdgeInsets.all(10),
        width: double.infinity,
        height: 350,
        color: Colors.black87,
        child: ...
        )
);

我该如何解决这个错误。

【问题讨论】:

【参考方案1】:

我不知道实际发生了什么,但我将ClipPath() 包裹在一个容器中,并赋予它与其中的容器相同的高度,即 350

Container
height: 350,
child: ClipPath(
      clipper: WaveClipperTwo(flip: true, reverse: true),
      child: Container(
        padding: EdgeInsets.all(10),
        width: double.infinity,
        height: 350,
        color: Colors.black87,
        child: ...
        )
    ),
);

然后我没有收到任何错误。

我仍然不知道那个错误是关于什么的,如果你知道请随时告诉我:)

【讨论】:

感谢您的解决方案!在 Flutter web 上滚动带有 clipBehavior 和 borderRadius 的容器引发了类似的错误。除了错误之外没有明显的影响。我将容器做成了一个大小合适的盒子,并在其中嵌套了一个 ClipRRect,错误就消失了。神秘。

以上是关于Flutter:ClipPath() 小部件中的断言失败错误的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Cards:如何在 Flutter 中创建自定义卡片小部件

颤振 - 剪辑路径

如何从 Flutter 中的子小部件调用父小部件功能

Flutter 中的 OverlayEntry 和 Stack 小部件有啥区别?

Flutter 中的 StatefulBuilder 小部件

如何布局 GridView.count 以便小部件从 Flutter 中的父小部件顶部开始构建?