您好,我想从createState
的{{1}}内的SharedPreferences中读取值。
我尝试在该方法后添加StatefulWidget
,但是它不起作用。正确的做法是什么?
async
答案 0 :(得分:3)
你不知道。
在createState
内,除了状态创建外,您不应有任何其他内容。如果您想进行此类检查,请改为在State
类内进行:
class MyState extends State<MyWidget> {
@override
void didChangeDependencies() {
// check if the user is logged
}
}
答案 1 :(得分:1)
不要使用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();
}
}