dart 溢出时缩小TextField的字体大小- Flutter

vc6uscn9  于 2023-11-14  发布在  Flutter
关注(0)|答案(4)|浏览(159)

我希望文本字段内容的字体大小缩小时,达到特定宽度的文本字段。我已经尝试了一些解决方案,如计算文本宽度使用文本跨度,但我希望一个更高性能的解决方案。
任何帮助都非常感谢。

bqf10yzr

bqf10yzr1#

auto_size_text包仅适用于常规的文本小部件。
auto_size_text_field另一方面会给你给予你想要的。

rdlzhqv9

rdlzhqv92#

使用FittedBox小部件 Package 它

FittedBox(
 fit: BoxFit.scaleDown,
 child: Text(...)
 )

字符串

xv8emn3q

xv8emn3q3#

这个解决方案对我很有效:

SizedBox(
    width: desiredWidth,
    height: desiredHeight,
    child: FittedBox(
        fit: BoxFit.scaleDown,
        child: IntrinsicWidth(
            child: ConstrainedBox(
                constraints: BoxConstraints(
                    minWidth: desiredWidth,
                    minHeight: desiredHeight,
                ),
                child: TextField(
                    ...
                ),
            ),
        ),
    ),
)

字符串
内部的ConstrainedBox不是必需的,但是,如果没有它,当TextField为空时,IntrinsicWidth会缩小它,从而创建一个非常小的目标。
在我的项目中,我注意到根据我使用的BoxFit类型的不同,会有一些小的差异,所以你可以根据你的需要来调整。
一些缺点:

  • 没有下限,因此文本将继续缩小到超出可读的程度
  • 它不跟踪缩放因子,因此如果您对两个TextField使用此值,它们的字体大小可能不匹配
vs91vp4v

vs91vp4v4#

最好的方法是使用软件包自动大小文本
https://pub.dev/packages/auto_size_text
检查:

AutoSizeText(
  'My Text',
  style: TextStyle(fontSize: 30),
  minFontSize: 18,
  maxLines: 4,
  overflow: TextOverflow.ellipsis,
)

字符串

相关问题