1
               children: [
                  Positioned(
                    top: 1,
                    child: SizedBox(
                      height: 300,
                      width: 300,
                      child: FlareActor(
                        'assets/New File 5 (2).flr',
                        alignment: Alignment.centerRight,
                        isPaused: true,
                        animation: 'Checkmark Appear',
                      ),
                    ),
                  ),

在 Children 命名参数上方有一个 Stack Widget 名称。当我尝试在列、行或列表小部件中运行 Flare Actor 小部件时,它不起作用并且消失了。但是当我在 Stack 中使用它时效果很好,但我无法正确定位它。当我检查调试控制台时,出现了一个错误,就是这样:

The following assertion was thrown during performLayout():
I/flutter (18558): RenderStack object was given an infinite size during layout.
I/flutter (18558): This probably means that it is a render object that tries to be as big as possible, but it was put
I/flutter (18558): inside another render object that allows its children to pick their own size.
I/flutter (18558): The nearest ancestor providing an unbounded width constraint is:
I/flutter (18558):   RenderStack#2151d relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (18558):   creator: Stack ← MediaQuery ← LayoutId-[<_ScaffoldSlot.body>] ← CustomMultiChildLayout ←
I/flutter (18558):   AnimatedBuilder ← DefaultTextStyle ← AnimatedDefaultTextStyle ← _InkFeatures-[GlobalKey#874dd ink
 renderer] ← NotificationListener<LayoutChangedNotification> ← PhysicalModel ←
I/flutter (18558):   AnimatedPhysicalModel ← Material ← ⋯
I/flutter (18558):   parentData: offset=Offset(0.0, 0.0); id=_ScaffoldSlot.body (can use size)
I/flutter (18558):   constraints: BoxConstraints(0.0<=w<=360.0, 0.0<=h<=560.0) size: Size(360.0, 560.0)
I/flutter (18558):   alignment: AlignmentDirectional.topStart
I/flutter (18558):   textDirection: ltr
I/flutter (18558):   fit: loose
I/flutter (18558):   overflow: clip
I/flutter (18558): The nearest ancestor providing an unbounded height constraint is:
I/flutter (18558):   RenderStack#2151d relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (18558):   creator: Stack ← MediaQuery ← LayoutId-[<_ScaffoldSlot.body>] ← CustomMultiChildLayout ←
I/flutter (18558):   AnimatedBuilder ← DefaultTextStyle ← AnimatedDefaultTextStyle ← _InkFeatures-[GlobalKey#874dd ink
I/flutter (18558):   renderer] ← NotificationListener<LayoutChangedNotification> ← PhysicalModel ←
I/flutter (18558):   AnimatedPhysicalModel ← Material ← ⋯
I/flutter (18558):   parentData: offset=Offset(0.0, 0.0); id=_ScaffoldSlot.body (can use size)
I/flutter (18558):   constraints: BoxConstraints(0.0<=w<=360.0, 0.0<=h<=560.0)
I/flutter (18558):   size: Size(360.0, 560.0)
I/flutter (18558):   alignment: AlignmentDirectional.topStart
I/flutter (18558):   textDirection: ltr 
I/flutter (18558):   fit: loose
I/flutter (18558):   overflow: clip
I/flutter (18558): The constraints that applied to the RenderStack were:
I/flutter (18558):   BoxConstraints(unconstrained)
I/flutter (18558): The exact size it was given was:
I/flutter (18558):   Size(Infinity, Infinity)
I/flutter (18558): See https://flutter.dev/layout/ for more information.  
4

3 回答 3

1

你实际上可以把它放在一个 Expanded() 中,并有一个 Container 作为孩子。例如,这工作得很好:

body: Column(
          children: [
            Expanded(
              child: Container(
                child: FlareActor(

这样,您可以将多个照明弹放在一列中。有一个很棒的文档。只需向下滚动到此处的示例 25:https ://flutter.dev/docs/development/ui/layout/constraints

于 2020-06-29T20:31:24.363 回答
1

这是因为尺寸问题...

仔细阅读以下错误

I/flutter (18558):在布局期间,RenderStack 对象被赋予了无限大小。

I/flutter (18558):这可能意味着它是一个试图尽可能大的渲染对象,但它被放置在另一个渲染对象中,允许其子级选择自己的大小。

关注这几行,你就会明白问题所在

但它被放在另一个渲染对象中,允许其子级选择自己的大小。

应用以下添加:

  • 在 Positioned 小部件中添加位置偏移。
  • 将 SizedBox 的大小增加到 (360.0, 560.0)。
  • 将 Sizedbox() 替换为 Container()。
  • 重命名你的flare文件并重新导入。
  • 在 FlareActor() 中添加一个 fit 属性。
  • 为不限制子大小的 Flareactor() 使用适当的父小部件。
于 2020-02-05T10:31:55.943 回答
0

用 Expanded() 包裹 FlareActor: 示例:

Expanded(child: FlareActor("Assets/wellness.flr", alignment:Alignment.center, fit:BoxFit.contain, animation:"idle")),
于 2019-10-19T10:12:05.773 回答