flutter controller 下的TextEditingController出现光标位置定位问题

之前一直在使用TextField对进行赋值的时候,发现controller会经常用到然后将他封装到了一个类当中,代码如下:

static TextEditingController inputTextCollection(String value) {
    return TextEditingController.fromValue(TextEditingValue(
        text: value,
        //让光标保持在最后
        selection: TextSelection.fromPosition(TextPosition(
            affinity: TextAffinity.downstream, offset:value==""?0:value.length))
    ));
  }

然后发现如果需要修改中间的内容时,光标也会跑到最后当中去,然后查了查官方文档发现下面这样写可以解决光标位置在最后的问题。然后发现也不行,后来看到提示

Text selection index was clamped (-1->0) to remain in bounds. This may not be your fault, as some keyboards may select outside of bounds.

进行了这行代码,就可以搞定:
String value=”1234“; //需要保存的值
TextEditingController inputTextCollection(String value) {
TextEditingController tempController = TextEditingController();
//解决设置了初始值之后,
tempController.addListener(() {
final text =tempController.text;
tempController.value = tempController.value.copyWith(
text: text,
selection: TextSelection(baseOffset: text.length, extentOffset: text.length),
composing: TextRange.empty,
);
});
tempController.text = value;
return tempController;
}

TextField(
controller:inputTextCollection(value)

原文地址:
https://stackoverflow.com/questions/60047389/text-selection-index-was-clamped-1-0-to-remain-in-bounds-in-my-description

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值