在按钮单击中的 TextField 中添加文本
Add Text in TextField in button click in flutter
我想在单击我的按钮时将文本添加到文本字段中,但问题是它是在文本字段值的末尾添加文本我想在用户想要在文本字段中间或任何位置添加文本的地方添加文本。 .
我试试 :
TextEditingController symbolTextField = TextEditingController();
symbolTextField.text =
symbolTextField.text + items[index];
但我的项目值是添加在文本字段值的末尾
利用controller.selection
,我为你创建了一个例子:
class _MyHomePageState extends State<MyHomePage> {
TextEditingController controller;
@override
void initState() {
super.initState();
controller = TextEditingController();
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: TextField(
controller: controller,
),
),
ElevatedButton(
onPressed: () => insert("SSS"),
child: Text('Add "SSS"'),
),
],
),
),
);
}
void insert(String content) {
var text = controller.text;
var pos = controller.selection.start;
controller.value = TextEditingValue(
text: text.substring(0, pos) + content + text.substring(pos),
selection: TextSelection.collapsed(offset: pos + content.length),
);
}
}
我想在单击我的按钮时将文本添加到文本字段中,但问题是它是在文本字段值的末尾添加文本我想在用户想要在文本字段中间或任何位置添加文本的地方添加文本。 . 我试试 :
TextEditingController symbolTextField = TextEditingController();
symbolTextField.text =
symbolTextField.text + items[index];
但我的项目值是添加在文本字段值的末尾
利用controller.selection
,我为你创建了一个例子:
class _MyHomePageState extends State<MyHomePage> {
TextEditingController controller;
@override
void initState() {
super.initState();
controller = TextEditingController();
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: TextField(
controller: controller,
),
),
ElevatedButton(
onPressed: () => insert("SSS"),
child: Text('Add "SSS"'),
),
],
),
),
);
}
void insert(String content) {
var text = controller.text;
var pos = controller.selection.start;
controller.value = TextEditingValue(
text: text.substring(0, pos) + content + text.substring(pos),
selection: TextSelection.collapsed(offset: pos + content.length),
);
}
}