我正在尝试在Flutter的文本字段中添加行号,就像在任何文本编辑器中一样。我的文本会溢出到下一行,所以我想显示出每行的起始和结束位置。
我脑海中首先想到的方法是将屏幕分成两列,一列用于显示左侧的行号,另一列用于文本字段的右侧。然而,由于屏幕大小不同,我无法知道何时会发生文本溢出。
有没有更正式的方法来实现这个功能?
首先,初始化一个TextField的列表
和一个currentLine
整数变量。TextField必须包含名为textInputAction
和onEditingComplete
的属性。因此,每次按回车键都被视为完成当前TextField,并创建一个新的TextField并将其添加到TextField列表
中,然后将焦点移动到新的TextField。行号将来自每个TextField的inputDecoration
,值将来自currentLine
变量。在onEditingComplete
内还会运行curentLine++
。
你可以使用TextSelection()
TextSelection selection = TextSelection(baseOffset: 0, extentOffset: text.length);
List<TextBox> boxes = textPainter.getBoxesForSelection(selection);
int numberOfLines = boxes.length;
获取您的文本中的numberOfLines
,计数并为每行显示。