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

wei*_*owi 4 dart flutter

我怎样才能获得widthheightText

Text(
   "????????",
   style: TextStyle(
      color: Colors.red,
      fontSize: 18
   ),
),
Run Code Online (Sandbox Code Playgroud)

iPa*_*tel 5

实际上Text是小部件,并获取颤振中任何小部件的高度和宽度,您必须使用GlobalKey并将其分配给我们的小部件。

\n\n
GlobalKey txtKey = GlobalKey();\n
Run Code Online (Sandbox Code Playgroud)\n\n

并将此键设置为Text小部件

\n\n
Text(\n   key: txtKey,\n   "\xe5\x90\x83\xe8\x91\xa1\xe8\x90\x84\xe4\xb8\x8d\xe5\x90\x90\xe8\x91\xa1\xe8\x90\x84\xe7\x9a\xae",\n   style: TextStyle(\n      color: Colors.red,\n      fontSize: 18\n   ),\n),\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以通过在按钮按下事件中的其他位置编写以下代码来访问高度/宽度!

\n\n
    final keyContext = txtKey.currentContext;\n    if (keyContext != null) {\n          final txtBox = keyContext.findRenderObject() as RenderBox;\n          print(\'height ${txtBox.size.height} and width ${txtBox.size.width}\');\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

此处txtBox返回文本的确切大小。

\n


Sur*_*gch 5

如果使用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)
Run Code Online (Sandbox Code Playgroud)


Dan*_*yar -2

将其包装到 Container() 中:

\n\n
Container(\n      width: 10.0,\n      height: 20.0,\n      child: Text(\n        "\xe5\x90\x83\xe8\x91\xa1\xe8\x90\x84\xe4\xb8\x8d\xe5\x90\x90\xe8\x91\xa1\xe8\x90\x84\xe7\x9a\xae",\n        style: TextStyle(\n            color: Colors.red,\n            fontSize: 18\n        ),\n      ),\n    )\n
Run Code Online (Sandbox Code Playgroud)\n