You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter TextFormField绑定Controller后无法输入问题求助

问题解决:TextFormField添加controller后无法输入

问题原因

你在TextFormField中同时使用了controller和onChanged,并且在onChanged回调里手动执行phone.text = value,这会造成状态冲突:

  • 绑定controller后,TextFormField本身会通过controller自动同步输入内容
  • 手动给controller.text赋值会触发controller的状态更新,反过来干扰输入框的正常输入流程,导致键盘输入无响应

解决方案

直接移除onChanged里的phone.text = value代码即可;如果不需要额外的内容变更逻辑,甚至可以删掉整个onChanged回调。

修正后的代码:

final TextEditingController phone = TextEditingController();

TextFormField(
  textInputAction: TextInputAction.done,
  keyboardType: TextInputType.number,
  // 若需处理内容变化(如校验、格式化),可保留onChanged但不要直接修改controller.text
  // onChanged: (value) {
  //   // 示例:限制输入长度为11位
  //   if (value.length > 11) {
  //     phone.text = value.substring(0, 11);
  //     phone.selection = TextSelection.fromPosition(TextPosition(offset: phone.text.length));
  //   }
  // },
  controller: phone,
  style: const TextStyle(
    color: Colors.white,
    fontSize: 50,
    fontWeight: FontWeight.bold,
  ),
)

如果确实需要在内容变化时修改输入内容(比如格式化手机号),记得同步设置光标位置,避免光标错位问题。

内容的提问来源于stack exchange,提问作者EBENEZER OCANSEY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:34:50