Flutter中的字符串像素长度

3

我有一个字符串 ('hello') 和一个字体大小 (20),是否有任何方法可以返回该字符串在像素中的长度?

final String foo = 'hello';
final double fontSize = 20.0:
final pix = pixelsOf(foo, fontSize); //something like this

我们是在谈论Flutter还是JavaScript? - julemand101
好的,在Flutter中。 - m.delloso
你能描述一下你想做什么吗?也许有其他方法可以实现它,而不是计算像素数量等。 - Gunhan
我必须将一个段落放置在CustomPainter中。段落的框必须与文本的长度一样紧凑。 - m.delloso
1个回答

6

这是示例代码:

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(home: Scaffold(body: Home())));
}

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var text = 'I\'m awesome!';
    var size = calcTextSize(text, TextStyle(fontSize: 20));

    return Center(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Text(text, style: TextStyle(fontSize: 20)),
          Container(width: size.width, height: 4, color: Colors.blue),
          Text(size.width.toString()), // this blue line has exactly same width as text above
        ],
      ),
    );
  }

  Size calcTextSize(String text, TextStyle style) {
    final TextPainter textPainter = TextPainter(
      text: TextSpan(text: text, style: style),
      textDirection: TextDirection.ltr,
      textScaleFactor: WidgetsBinding.instance.window.textScaleFactor,
    )..layout();
    return textPainter.size;
  }
}

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接