Flutter报错:TextEditingController类无'selection' setter的求助
解决TextEditingController设置selection报错的问题
原因分析及解决步骤
1. 优先使用value属性原子更新文本与光标
直接单独设置text和selection可能触发状态冲突,更稳妥的方式是通过TextEditingController.value一次性更新文本内容和光标位置:
onChanged: (text) { _myController.value = TextEditingValue( text: text, selection: TextSelection.fromPosition( TextPosition(offset: text.length), ), ); },
这种写法会避免单独赋值可能导致的状态不同步问题,也是官方推荐的更新方式。
2. 检查导入依赖是否正确
确认文件顶部导入的是Flutter官方库的TextEditingController,避免第三方库的同名类干扰:
import 'package:flutter/material.dart'; // 或import 'package:flutter/cupertino.dart';
3. 简化冗余代码
onChanged回调的text参数本身就是TextField的当前输入内容,无需重复赋值_myController.text = text。如果仅需保持光标在末尾,可简化为:
onChanged: (text) { _myController.selection = TextSelection.collapsed(offset: text.length); },
内容的提问来源于stack exchange,提问作者Salar Azad
相关产品推荐
相关产品推荐

