如何在Flutter的TextField中添加行号?

14

我正在尝试在Flutter的文本字段中添加行号,就像在任何文本编辑器中一样。我的文本会溢出到下一行,所以我想显示出每行的起始和结束位置。

我脑海中首先想到的方法是将屏幕分成两列,一列用于显示左侧的行号,另一列用于文本字段的右侧。然而,由于屏幕大小不同,我无法知道何时会发生文本溢出。

有没有更正式的方法来实现这个功能?

3个回答

1

首先,初始化一个TextField的列表和一个currentLine整数变量。TextField必须包含名为textInputActiononEditingComplete的属性。因此,每次按回车键都被视为完成当前TextField,并创建一个新的TextField并将其添加到TextField列表中,然后将焦点移动到新的TextField。行号将来自每个TextField的inputDecoration,值将来自currentLine变量。在onEditingComplete内还会运行curentLine++


0

你可以使用TextSelection()

TextSelection selection = TextSelection(baseOffset: 0, extentOffset: text.length);
List<TextBox> boxes = textPainter.getBoxesForSelection(selection);
int numberOfLines = boxes.length;

获取您的文本中的numberOfLines,计数并为每行显示。


0

请查看这篇文章,了解有关LineMetrics的信息。

正如您所看到的,这提供了有关呈现文本行的元数据列表。使用行号和hardBreak属性,您可以一起计算要在左侧列中显示的行号。


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