我有一个容器,我需要显示一个条形码(它是虚拟保真卡的应用程序),我希望条形码在屏幕上尽可能宽 . 现在我将字体大小设置为适合所有设备的合理大小,但它当然只是暂时的 . 我怎么解决这个问题?这是我用于构建Widget的代码 .
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(_title),
),
body: Container(
padding: const EdgeInsets.all(12.0),
child: Column(
children: <Widget>[
SizedBox(
width: double.infinity,
child: Text(_barcode, style: TextStyle(fontFamily: 'Code128', fontSize: 90.0))
),
Text(_barcode, style: TextStyle(fontSize: 40.0))
]
),
)
);
}
2 回答
我相信你要找的是FittedBox .
BoxFit适用于您想要拉伸/缩放儿童以适合盒子的“适合” . 它不会对文本执行纯粹的“拉伸”,而是应该占用的空间 . 您不应同时指定文本的大小 .
看起来像这样:
如果您想要实际“拉伸”文本(即使实际字符更宽或更高),您将不得不做一些更自定义的事情 .
如果是这种情况,请查看CustomPaint,CustomPainter,_ _1189059_和Canvas translate和scale选项 . 基本上,您需要创建一个扩展CustomPainter的类,在该类中创建TextPainter,将其放置在特定大小,将其绘制到画布上,然后缩放它以适合CustomPainter的实际大小(或者您是否缩放画布第一 - 我忘了......) . 然后,您将该类的实例传递给CustomPaint .
使用
TextPainter.width
和for循环查找最大的拟合字体大小(添加1效率不高,您可能需要对其进行微调):