Flutter从SharedPreferences StringList读取数据初始化TextEditingController报错求助
解决方案
问题原因
TextEditingController的构造函数不支持位置参数,你直接传入info[0]作为位置参数不符合它的构造规则,所以会报"Too many positional arguments"错误。
正确写法
初始化TextEditingController时,需要通过**命名参数text**来设置初始文本:
displayname = TextEditingController(text: info[0]);
空安全与边界处理(避免崩溃)
考虑到info可能为空、或者列表长度不足的情况,建议加上判断逻辑防止索引越界:
@override void onInit() { super.onInit(); // 先从SharedPreferences读取info列表 List<String>? info = ...; // 你的读取逻辑 if (info != null && info.isNotEmpty) { displayname = TextEditingController(text: info[0]); } else { displayname = TextEditingController(); // 初始化空的控制器 } }
内容的提问来源于stack exchange,提问作者Mohammad Yazbeck
相关产品推荐
相关产品推荐

