gpt4 book ai didi

android - Flutter 的 TextPainter 抛出 '!_needsLayout' : is not true. ' 异常

转载 作者:行者123 更新时间:2023-12-04 12:33:10 25 4
gpt4 key购买 nike

我尝试使用 TextPainter获取文本小部件中字符串的最大长度,但如果我调用painter,它将抛出!_needsLayout': is not true.异常(exception)。
异常(exception)

The following assertion was thrown building FeedPage(dirty, dependencies: [MediaQuery], state: _FeedPageState#9c489):
'package:flutter/src/painting/text_painter.dart': Failed assertion: line 546 pos 12: '!_needsLayout': is not true.
使用 TextPainter 的方法
int maxCharCountToFit(String content) {
List<String> splitted = content.split(" ");

for (int i = splitted.length; i >= 0; i--) {
bool retry = TextPainter(
text: TextSpan(text: splitted.sublist(0, splitted.length - i).join(" "), style: pageTextStyle),
maxLines: 25,
textScaleFactor: MediaQuery.of(context).textScaleFactor,
textDirection: TextDirection.ltr,
).didExceedMaxLines ==
false;

if (retry == false) {
return splitted.sublist(0, i).length;
}
}

return 0;
}
完整文件
see this file on GitHub .

最佳答案

在调用 layout 之前不会计算绘制文本的大小.这必须在访问任何与大小相关的属性(如 didExceedMaxLines)之前完成。 .
咨询API documentation了解更多信息。

关于android - Flutter 的 TextPainter 抛出 '!_needsLayout' : is not true. ' 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67152774/

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