UI 中未显示 Sharedpreference 值
Sharedpreference value not being displayed in UI
我正在从 Sharedpreference 中检索用户数据,但无法在 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
被异步调用。因此 UI 在 之前绘制 检索用户名值。
要解决此问题,只需在获得用户名值后调用 setState
,这将强制 UI 刷新。
这是一个快速实现:
getPrefs() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
username = prefs.getString('user_name') ?? '';
});
}
我正在从 Sharedpreference 中检索用户数据,但无法在 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
被异步调用。因此 UI 在 之前绘制 检索用户名值。
要解决此问题,只需在获得用户名值后调用 setState
,这将强制 UI 刷新。
这是一个快速实现:
getPrefs() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
username = prefs.getString('user_name') ?? '';
});
}