首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在创建ClipPath颤振时出错“每个子节点必须精确布局一次”

在创建ClipPath颤振时出错“每个子节点必须精确布局一次”
EN

Stack Overflow用户
提问于 2020-09-29 10:31:18
回答 1查看 2.3K关注 0票数 0

我是新来的,我想用剪贴画的路径为我的顶部做一个定制的形状,我正确地跟随了一些图层,但是对于我来说,我得到了,每个孩子都必须精确地排出一次错误。

这是我的密码

代码语言:javascript
复制
class MainPage extends StatefulWidget {
  @override
  _MainPageState createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          ClipPath(
            clipper: TopBarClipper(),
            child: Container(
              width: double.infinity,
              height: 300,
              color: Colors.black26,
            ),
          ),
        ],
      )
    );
  }
}

class TopBarClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    var path = Path();
    path.lineTo(0, size.height - 100);
    path.quadraticBezierTo(
        size.width / 5, size.height, size.width, size.height - 150);
    //path.lineTo(size.width, size.height);
    path.lineTo(size.width, 0);
    path.close();
    // TODO: implement getClip
    return path;
  }

  @override
  bool shouldReclip(covariant CustomClipper<Path> oldClipper) {
    // TODO: implement shouldReclip
    return null;
    throw UnimplementedError();
  }
}

现在我试着跑

代码语言:javascript
复制
════════ Exception caught by rendering library ═════════════════════════════════════════════════════
The following assertion was thrown during performLayout():
Each child must be laid out exactly once.

The _ScaffoldLayout custom multichild layout delegate forgot to lay out the following child: 
  _ScaffoldSlot.body: RenderStack#57108 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
    parentData: offset=Offset(0.0, 0.0); id=_ScaffoldSlot.body
    constraints: MISSING
    size: MISSING
    alignment: AlignmentDirectional.topStart
    textDirection: ltr
    fit: loose
The relevant error-causing widget was: 
  Scaffold file:///C:/Users/****/AndroidStudioProjects/****/lib/main/MainPage.dart:14:12
When the exception was thrown, this was the stack: 
#0      MultiChildLayoutDelegate._callPerformLayout.<anonymous closure> (package:flutter/src/rendering/custom_layout.dart:246:11)
#1      MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:259:8)
#2      RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:402:14)
#3      RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
#4      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:14)
...
The following RenderObject was being processed when the exception was fired: RenderCustomMultiChildLayoutBox#e4670 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...  parentData: <none> (can use size)
...  constraints: BoxConstraints(w=360.0, h=702.0)
...  size: Size(360.0, 702.0)
RenderObject: RenderCustomMultiChildLayoutBox#e4670 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
  parentData: <none> (can use size)
  constraints: BoxConstraints(w=360.0, h=702.0)
  size: Size(360.0, 702.0)
...  child 1: RenderStack#57108 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...    parentData: offset=Offset(0.0, 0.0); id=_ScaffoldSlot.body
...    constraints: MISSING
...    size: MISSING
...    alignment: AlignmentDirectional.topStart
...    textDirection: ltr
...    fit: loose
...    child 1: RenderClipPath#ded0f NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...      parentData: not positioned; offset=Offset(0.0, 0.0)
...      constraints: MISSING
...      size: MISSING
...      child: RenderConstrainedBox#b2003 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...        parentData: <none>
...        constraints: MISSING
...        size: MISSING
...        additionalConstraints: BoxConstraints(w=Infinity, h=300.0)
...        child: _RenderColoredBox#a551f NEEDS-LAYOUT NEEDS-PAINT
...          parentData: <none>
...          constraints: MISSING
...          size: MISSING
...          behavior: opaque
...  child 2: RenderStack#953d0 relayoutBoundary=up1 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...    parentData: offset=Offset(0.0, 0.0); id=_ScaffoldSlot.body (can use size)
...    constraints: BoxConstraints(0.0<=w<=360.0, 0.0<=h<=702.0)
...    size: Size(360.0, 300.0)
...    alignment: AlignmentDirectional.topStart
...    textDirection: ltr
...    fit: loose
...    child 1: RenderClipPath#5d400 relayoutBoundary=up2 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...      parentData: not positioned; offset=Offset(0.0, 0.0) (can use size)
...      constraints: BoxConstraints(0.0<=w<=360.0, 0.0<=h<=702.0)
...      size: Size(360.0, 300.0)
...      child: RenderConstrainedBox#cb85b relayoutBoundary=up3 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...        parentData: <none> (can use size)
...        constraints: BoxConstraints(0.0<=w<=360.0, 0.0<=h<=702.0)
...        size: Size(360.0, 300.0)
...        additionalConstraints: BoxConstraints(w=Infinity, h=300.0)
...        child: _RenderColoredBox#b00e1 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...          parentData: <none> (can use size)
...          constraints: BoxConstraints(w=360.0, h=300.0)
...          size: Size(360.0, 300.0)
...          behavior: opaque
...  child 3: RenderStack#6c594 relayoutBoundary=up1 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...    parentData: offset=Offset(344.0, 686.0); id=_ScaffoldSlot.floatingActionButton (can use size)
...    constraints: BoxConstraints(0.0<=w<=360.0, 0.0<=h<=702.0)
...    size: Size(0.0, 0.0)
...    alignment: centerRight
...    textDirection: ltr
...    fit: loose
...    child 1: RenderTransform#01581 relayoutBoundary=up2 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...      parentData: not positioned; offset=Offset(0.0, 0.0) (can use size)
...      constraints: BoxConstraints(0.0<=w<=360.0, 0.0<=h<=702.0)
...      size: Size(0.0, 0.0)
...      transform matrix: [0] 0.0,0.0,0.0,0.0
[1] 0.0,0.0,0.0,0.0
[2] 0.0,0.0,1.0,0.0
[3] 0.0,0.0,0.0,1.0
...      origin: null
...      alignment: center
...      textDirection: ltr
...      transformHitTests: true
...      child: RenderTransform#56c78 relayoutBoundary=up3 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...        parentData: <none> (can use size)
...        constraints: BoxConstraints(0.0<=w<=360.0, 0.0<=h<=702.0)
...        size: Size(0.0, 0.0)
...        transform matrix: [0] 0.7,0.7,0.0,0.0
[1] -0.7,0.7,0.0,0.0
[2] 0.0,0.0,1.0,0.0
[3] 0.0,0.0,0.0,1.0
...        origin: null
...        alignment: center
...        textDirection: ltr
...        transformHitTests: true
════════════════════════════════════════════════════════════════════════════════════════════════════

我在网上读到,有人说这只是飞扬的错误,我确实清理了我的颤音,然后重新运行,但它仍然存在,

当我使用ClipPath时,它就会出现。

为什么会发生这种事?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-09-29 10:43:05

我刚找到一个答案,但不知道这是否是个好办法,

我刚刚将shouldReclip返回改为true,并解决了问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64117789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档