如何解决颤动产生子弹点
我试图在flutter中使用textField接受用户输入,但是我想将其作为项目符号列表。我以为可能必须使用一个名为flutter_markdown的程序包,但我仍然不知道该怎么做。 就像每个最后一行都应该自动以项目符号开头。
解决方法
如果您想获得文本字段的项目符号列表,则flutter_markdown可能不适合您。由于它显示的是降价文字。
TextFormField(
decoration: InputDecoration(
border: InputBorder.none,prefix: Text("."),// Or a Dot image
),),
,
执行此操作的一种方法是这样。
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
TextEditingController tc = TextEditingController();
int currentTextLength = 0;
@override
Widget build(BuildContext context) {
return TextField(
maxLines: 4,controller: tc,onChanged: (String newText){
if(newText[0] != '•'){
newText = '• ' + newText;
tc.text = newText;
tc.selection = TextSelection.fromPosition(TextPosition(offset: tc.text.length));
}
if(newText[newText.length - 1] == '\n' && newText.length > currentTextLength){
tc.text = newText + '• ';
tc.selection = TextSelection.fromPosition(TextPosition(offset: tc.text.length));
}
currentTextLength = tc.text.length;
}
);
}
}
注意:这不是一个完美的解决方案。因为如果您开始在现有文本的中间编辑文本,则不会放置项目符号。但这也许可以为您指明方向。
,如果您想要一个具有项目符号功能的文本字段,则此软件包可能适合您:
https://pub.dev/packages/zefyr
如果您自己编写它会很复杂。
查看其示例代码以了解如何使用:
https://github.com/memspace/zefyr/tree/master/packages/zefyr/example/lib
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。