【Flutter】输入框TextField光标不在内容最后面

通过controller控制TextField时,默认状态下光标会跑到内容最前面。
通过以下方式,使光标保持在内容最后面;

class _FormmState extends State {
  TextEditingController _username = new TextEditingController();
  void initState() {
    super.initState();
    _username.text = "初始值";
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      height: 600,
      child: Column(
        children: [
          TextField(
            controller: _username,
            decoration: InputDecoration(
              icon: Icon(Icons.people),
              labelText: "用户名",
              helperText: "输入长度2个字以上的汉字",
              hintText: "请输入用户名",
              errorText: "errorText",
            ),
            onChanged: (value) {
              setState(() {
                _username.text = value;
                _username.value = TextEditingValue(
                  text: _username.text,
                  selection: TextSelection.fromPosition(
                    TextPosition(
                      affinity: TextAffinity.downstream,
                      offset: _username.text.length,
                    ),
                  ),
                );
              });
            },
          ),
          Container(
            child: TextButton(
              child: Text("提交"),
              onPressed: () {
                print(_username.text);
              },
            ),
          )
        ],
      ),
    );
  }

这个写法是试了网上很多方法里在我这唯一有用的,但是每次change都要设置一下感觉怪怪的,不知道有没有更好的写法。

参考链接:https://blog.csdn.net/qq_34529292/article/details/120096634

你可能感兴趣的:(【Flutter】输入框TextField光标不在内容最后面)