如何获取文本的宽度和高度?

时间:2019-06-29 02:45:48

标签: flutter dart

如何获得width的{​​{1}}和height

Text

4 个答案:

答案 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)

如果您使用 TextPainterParagraph 对象,您可以获得文本的大小。以下是您将如何使用 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)

enter image description here

以下是在Flutter中获取width或任何其他小部件的heightText的方法。

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
        ),
      ),
    )