代码之家  ›  专栏  ›  技术社区  ›  N Sharma

如何读取StatefulWidget的createState方法中的值

  •  1
  • N Sharma  · 技术社区  · 6 年前

    您好,我想从 createState StatefulWidget .

    我试着加上 async 在方法之后但它不起作用。正确的方法是什么?

    class LoginScreen extends StatefulWidget {
      @override
      _LoginScreenState createState() {
    
        // check if user is logged. If logged then send user to dashboard else keep it here
    
    
        return new _LoginScreenState();
      }
    }
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Rémi Rousselet    6 年前

    你没有。

    createState 在国家创造之外。如果你想做这种检查,在 State 改为类:

    class MyState extends State<MyWidget> {
      @override
      void didChangeDependencies() {
        // check if the user is logged
      }
    }
    
        2
  •  1
  •   diegoveloper    6 年前

    不要使用createState来读取值,可以使用 initState FutureBuilder 也许 吧。

    class LoginScreen extends StatefulWidget {
        @override
        _LoginScreenState createState() => _LoginScreenState();
      }
    
      class _LoginScreenState extends State<LoginScreen> {
        String value;
    
        _readPreference() async {
          SharedPreferences prefs = await SharedPreferences.getInstance();
          //refresh your screen based on the current parameter
          setState(() {
            value = prefs.getString("your_value_key");
          });
        }
    
        @override
        void initState() {
          _readPreference();
          super.initState();
        }
    
        @override
        Widget build(BuildContext context) {
          return Container();
        }
      }