首页 > 解决方案 > 在 Flutter 中单击按钮的 TextField 中添加文本

问题描述

我想在单击按钮时将文本添加到文本字段中,但问题是它在文本字段值的末尾添加文本我想在用户想要在文本字段中间或任何位置添加文本的位置添加文本.. 我尝试:

  TextEditingController symbolTextField = TextEditingController();

  symbolTextField.text =
                                symbolTextField.text + items[index];

但我的项目值添加到文本字段值的末尾

示例视频:

标签: flutteruitextfield

解决方案


使用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),
    );
  }
}

推荐阅读