flutter - 有没有办法在呈现之前计算文本宽度?

标签 flutter

我有一个固定大小的框,我需要传递高度值。

在框内,我有一个可能溢出的文本小部件,因此我需要将“maxLines”设置为 2。但是,因为框高度是固定的,所以文本小部件不会占用 2 行。

我可以为框的高度传递一个更大的值,但如果文本小部件只占用 1 行,它看起来不太好。

如果我可以计算文本小部件的总像素,然后通过将其与固定大小框的宽度进行比较,计算出文本小部件需要多少行,那就太好了。

    SizedBox(
      child: Text(
        title,
        style: Theme.of(context).textTheme.headline6,
        maxLines: 2,
      ),
      width: 300,
      height: 60,
    ),

例如

      height: Theme.of(context).textTheme.headline6.fontSize * title.length > 300? 72 : 60

最佳答案

答案在这里

  Size calcTextSize(String text, TextStyle style) {
    final TextPainter textPainter = TextPainter(
      text: TextSpan(text: text, style: style),
      textDirection: TextDirection.ltr,
      textScaleFactor: WidgetsBinding.instance.window.textScaleFactor,
    )..layout();
    return textPainter.size;
  }

final double textWidth = calcTextSize(text, TextStyle(fontSize: fontSize)).width;

关于flutter - 有没有办法在呈现之前计算文本宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64663441/

相关文章:

flutter - 如何在 flutter 中使用按钮重启应用程序

Flutter:不同平台的不同依赖版本?

dart - 第一次点击 flutter 后如何禁用按钮?

Flutter:BLoC 包 - bloc 提供者

Flutter firebase_admob 在testdevice中不显示广告

flutter - 如何从Map中的值中选择List中的特定Map?

flutter - 如何将循环 api 中的列表合并到一个列表中

flutter - 'TextStyle ?' can' t 被分配给参数类型 'TextStyle'

firebase - Flutter Google 登录数据保存到 Firebase Cloud Firestore

routing - Flutter:我是否需要在 onGenerateRoute 中缓存小部件