Flutter TextFormField将登录时保存的信息作为初始值,但再次启动登录页面时显示错误

时间:2019-05-07 04:22:32

标签: flutter

我尝试使用共享首选项实现“记住我”功能。

我正在通过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

0 个答案:

没有答案