如何获得width
的{{1}}和height
?
Text
答案 0 :(得分:2)
实际上Text
是窗口小部件,要获得抖动中任何窗口小部件的高度和宽度,您必须使用GlobalKey
并将其分配给我们的窗口小部件。
GlobalKey txtKey = GlobalKey();
并将此密钥设置为Text
小部件
Text(
key: txtKey,
"吃葡萄不吐葡萄皮",
style: TextStyle(
color: Colors.red,
fontSize: 18
),
),
然后您可以通过在下面的代码中编写高度/宽度来访问高度/宽度,否则可能发生按钮按下事件!
final keyContext = txtKey.currentContext;
if (keyContext != null) {
final txtBox = keyContext.findRenderObject() as RenderBox;
print('height ${txtBox.size.height} and width ${txtBox.size.width}');
}
此处txtBox
返回文本的确切大小。
答案 1 :(得分:2)
如果您使用 TextPainter
或 Paragraph
对象,您可以获得文本的大小。以下是您将如何使用 TextPainter
:
final text = '不吃葡萄倒吐葡萄皮';
final style = TextStyle(fontSize: 30);
TextPainter textPainter = TextPainter()
..text = TextSpan(text: text, style: style)
..textDirection = TextDirection.ltr
..layout(minWidth: 0, maxWidth: double.infinity);
print(textPainter.size); // Size(270.0, 43.0)
答案 2 :(得分:1)
以下是在Flutter中获取width
或任何其他小部件的height
和Text
的方法。
GlobalKey _key = GlobalKey();
Size _size = Size.zero;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"吃葡萄不吐葡萄皮",
key: _key,
),
RaisedButton(
child: Text("Size"),
onPressed: () => setState(() => _size = _key.currentContext.size),
),
Text("Width = ${_size.width}, Height = ${_size.height}")
],
),
),
);
}
答案 3 :(得分:0)
将其包装到Container():
Container(
width: 10.0,
height: 20.0,
child: Text(
"吃葡萄不吐葡萄皮",
style: TextStyle(
color: Colors.red,
fontSize: 18
),
),
)