我想将共享首选项中存储的值显示为初始电子邮件和密码值。 为此,我创建了autoLogin方法并使用了TextField的initialValue属性。 但是,这些字段继续显示为空白。 我在做什么错了?
void autoLogin() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
var autoLogin = (prefs.getInt('autoLogin') ?? 10);
if (autoLogin == 1) {
setState(() {
_email = prefs.getString('email');
print(_email);
});
}
@override
void initState() {
autoLogin();
super.initState();
}
@override
Widget build(context) {
return Scaffold(
....
TextFormField(
initialValue: _email,
....
答案 0 :(得分:1)
在这里,我已经定义了一个控制器,并像Chinky所说的那样在autoLogin()函数中设置了它的值。
final TextEditingController _controller = TextEditingController();
void autoLogin() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
var autoLogin = prefs.getInt('autoLogin') ?? 10; // still don't know what this is, a boolean?
if (autoLogin == 1) {
setState(() {
_controller.text = prefs.getString('email');
});
}
}
@override
void initState() {
super.initState();
autoLogin();
}
@override
Widget build(BuildContext context) {
return Scaffold(
....
TextFormField(
controller: _controller,
initialValue: "", // set it to a string by default
....