FormTextField-InitialValue无法从持久数据中使用

时间:2019-12-07 13:11:34

标签: flutter

我想将共享首选项中存储的值显示为初始电子邮件和密码值。 为此,我创建了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,
       .... 

1 个答案:

答案 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
           ....