documentation for CustomPainter's paint method说,“要在Canvas
上绘制文本,请使用TextPainter
“。因此,在我的MyCustomPainter
的paint方法中,我有以下内容:
TextSpan span = new TextSpan(text: 'Yrfc');
TextPainter tp = new TextPainter(text: span, textAlign: TextAlign.left);
tp.layout();
tp.paint(canvas, new Offset(5.0, 5.0));
字符串
我尝试了各种偏移量(Offset.zero, Offset.infinite, new Offset(10.0, 10.0)
,但我从来没有能够看到屏幕上绘制的文本。
3条答案
按热度按时间ldfqzlk81#
的数据
要在Flutter中绘画,您可以使用
CustomPaint
小部件。CustomPaint
小部件将CustomPainter
对象作为参数。在该类中,您必须重写paint
方法,该方法为您提供了一个可以在其上绘画的画布。下面是在上图中绘制文本的代码。字符串
注意事项:
ltr
代表从左到右,这是英语等语言使用的。另一个选项是rtl
(从右到左),这是阿拉伯语和希伯来语等语言使用的。这有助于减少代码在开发人员没有考虑的语言环境中使用时的错误。上下文
下面是main.dart代码,以便您可以在上下文中查看它。
型
参见
参见this article以获得更完整的答案。
relj7zay2#
我在打字的时候找到了答案,但是我已经纠结了一段时间了,所以在这里发帖,以防对其他人有帮助。
解决这个问题的方法是将TextSpan行改为:
TextSpan span = new TextSpan(style: new TextStyle(color: Colors.grey[600]), text: 'Yrfc');
显然,它要么是无形地绘制文本,要么是作为白色(背景)颜色,因为我没有明确选择颜色。
0aydgbwb3#
在TextPainter构造函数中,还需要指定TextDirection参数,否则会收到异常:
字符串