我正在尝试在共享首选项中保存用户详细信息。并尝试从中生成一个二维码。
我已将共享首选项中的密钥分配为字符串列表,但是当我尝试返回字符串列表并将其分配给列表时,我可以将其发送给qr生成器函数,它将引发错误,< / p>
“类型'Future'不是类型'列表'的子类型”
我的代码如下
_read() async {
print("reading stored data");
final prefs = await SharedPreferences.getInstance();
// read
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
print(myStringList);
return myStringList;
}
通话功能
onPressed: () {
setState((){
var _user_details = new List(3);
_user_details = _read();
_dataString=_user_details[0]+"/n"+_user_details[1]+"/n"+_user_details[2];
print(_dataString);
_inputErrorText = null;
});
},
答案 0 :(得分:0)
在onPressed
刷新之前,先在setState
中进行异步调用
onPressed: () async {
var _user_details = await _read();
setState(() {
// you might check _user_details is null or something here...
_dataString = _user_details[0]+"/n"+_user_details[1]+"/n"+_user_details[2];
print(_dataString);
_inputErrorText = null;
});
},
请注意,您应检查您的_user_details
为null还是格式错误(例如长度<3)。