我尝试使用共享首选项实现“记住我”功能。
我正在通过controller.text保存用户名和密码。 首先,在initState中,如果记得我被选中,则从共享首选项中获取。 其次,在文本表单字段上,如果记住我为真,则在TextFormField的初始值中显示保存的值,否则为null。 第一次使用以及当用户从家里登录时,它都可以正常工作,并在TextFormField的“初始值”中显示保存的值。
但是在以下用例中显示错误:
在initState
中记住。
if(isRemember == true){
getremember();
}
TextFormField。
TextFormField(
focusNode: myFocusNodeEmailLogin,
controller: loginEmailController,
keyboardType: TextInputType.emailAddress,
style: TextStyle(
fontSize: 16.0,
color: Colors.black),
decoration: InputDecoration(
border: InputBorder.none,
icon: Icon(
FontAwesomeIcons.envelope,
color: Colors.black,
size: 22.0,
),
hintText: "Email Address",
),
initialValue: rememberMe == true ? rememberUsername.toString() : null,
validator: (val) =>
!val.contains('@') ? 'Invalid Email' : null,
onSaved: (val) => _email = val,
)
我需要记住用户,而不会出现任何错误,因为它可以正常工作,因为预期的信息已在日志中打印出来,但是texfield不会在页面启动时使用它。
错误是
'initialValue == null || controller == null': is not true.
更新:
我在这里找到了解决方案,它解决了我的问题
https://medium.com/@vignesh_prakash/flutter-sharedpreferences-8622bb32abf9