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

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

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

  @override
  Widget build(BuildContext context) {
    return Container(
      height: 600,
      child: Column(
        children: <Widget>[
          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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容