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

时间:2018-11-22 16:52:12

标签: android ios flutter sharedpreferences

您好,我想从createState的{​​{1}}内的SharedPreferences中读取值。

我尝试在该方法后添加StatefulWidget,但是它不起作用。正确的做法是什么?

async

2 个答案:

答案 0 :(得分:3)

你不知道。

createState内,除了状态创建外,您不应有任何其他内容。如果您想进行此类检查,请改为在State类内进行:

class MyState extends State<MyWidget> {
  @override
  void didChangeDependencies() {
    // check if the user is logged
  }
}

答案 1 :(得分:1)

不要使用createState读取值,可以使用initStateFutureBuilder

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();
    }
  }