UI中未显示共享引用值



我正在从SharedReference检索用户数据,但无法在UI文本部分显示,但只有当我点击热重载时,检索到的数据才会显示在UI文本中。

String username = "";
@override
void initState() {
getPrefs();
super.initState();
}
getPrefs() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
username = prefs.getString('user_name') ?? '';
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Text(username == "" ? "Username" : username, style: TextStyle(fontWeight: FontWeight.bold,),),
)
);
}

getPrefs被异步调用。因此,在检索用户名值之前绘制用户界面。

要解决此问题,只需在获得username值后调用setState,即可强制刷新UI。

以下是一个快速实现:

getPrefs() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
username = prefs.getString('user_name') ?? '';
});
}

最新更新