gpt4 book ai didi

android - 断言宽度 > 0.0' : is not true when placing single Image in Container in FittedBox 失败

转载 作者:IT王子 更新时间:2023-10-29 06:34:21 32 4
gpt4 key购买 nike

当我将 Image.network 放置在作为 FittedBox 子项的 Row 或 Container 中时,查看它会导致错误/崩溃。

FittedBox 实际上使用一个函数作为其子项,该函数根据图像数量返回一个小部件。当有两个图像时,它返回一个 Row ,其中每个图像都是它的子图像,它可以正常工作,但是当只有一个图像时,无论我返回一个以图像作为其子图像的 Container 还是一个带有 Single 子图像的 Row ,都会发生错误成为形象。

            Container(
child: FittedBox(child: status.statusFiles()),
),

状态文件:

    return Container(
child:
Image.network(
this.files[0].thumbnailUrl,
fit: BoxFit.contain,
),
);

我希望 FittedBox 包含适合的最大尺寸的图像,但在呈现小部件时出现以下错误

I/flutter (26617): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (26617): The following assertion was thrown during performLayout():
I/flutter (26617): 'package:flutter/src/rendering/box.dart': Failed assertion: line 307 pos 12: 'width > 0.0': is not
I/flutter (26617): true.
...
I/flutter (26617): When the exception was thrown, this was the stack:
I/flutter (26617): #2 BoxConstraints.constrainSizeAndAttemptToPreserveAspectRatio (package:flutter/src/rendering/box.dart:307:12)
I/flutter (26617): #3 RenderFittedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:2275:26)
I/flutter (26617): #4 RenderObject.layout (package:flutter/src/rendering/object.dart:1634:7)
I/flutter (26617): #5 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:738:15)
I/flutter (26617): #6 RenderObject.layout (package:flutter/src/rendering/object.dart:1634:7)
I/flutter (26617): #7 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:798:17)
I/flutter (26617): #8 RenderObject.layout (package:flutter/src/rendering/object.dart:1634:7)
I/flutter (26617): #9 RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:199:11)
...
I/flutter (26617): The following RenderObject was being processed when the exception was fired:
I/flutter (26617): RenderFittedBox#d752c relayoutBoundary=up8 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (26617): creator: FittedBox ← Container ← Column ← Expanded ← Row ← Padding ← Container ←
I/flutter (26617): RepaintBoundary-[<16>] ← IndexedSemantics ← NotificationListener<KeepAliveNotification> ←
I/flutter (26617): KeepAlive ← AutomaticKeepAlive ← ⋯
I/flutter (26617): parentData: offset=Offset(0.0, 0.0); flex=null; fit=null (can use size)
I/flutter (26617): constraints: BoxConstraints(0.0<=w<=339.4, 0.0<=h<=Infinity)
I/flutter (26617): size: MISSING
I/flutter (26617): fit: contain
I/flutter (26617): alignment: center
I/flutter (26617): textDirection: ltr
I/flutter (26617): This RenderObject had the following descendants (showing up to depth 5):
I/flutter (26617): RenderSemanticsAnnotations#df6f3 relayoutBoundary=up9 NEEDS-PAINT
I/flutter (26617): RenderImage#63da1 relayoutBoundary=up10 NEEDS-PAINT
I/flutter (26617): ════════════════════════════════════════════════════════════════════════════════════════════════════

最佳答案

之前的解决方案都不适合我,因为我使用了 fit: Boxfit.fitWidth 并且我确实需要祖先的高度取决于图像宽度。

我的解决方案是将图像包裹在 ConstrainedBox 中并手动应用 min. 1 的高度和宽度:

ConstrainedBox(
constraints: BoxConstraints(maxHeight: maxHeight),
child: Hero(
tag: 'SettingsPic',
child: Container(
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.vertical(bottom: Radius.circular(25)),
boxShadow: [BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 10
)]
),
child: ClipRRect(
borderRadius: BorderRadius.vertical(bottom: Radius.circular(25)),
child: FittedBox(
fit: BoxFit.fitWidth,
alignment: Alignment.bottomCenter,
child: ConstrainedBox(
constraints: BoxConstraints(minWidth: 1, minHeight: 1), // here
child: Image.asset(
'resources/images/background.png',
),
),
),
),
),
),
)

关于android - 断言宽度 > 0.0' : is not true when placing single Image in Container in FittedBox 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340675/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com