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') ?? '';
  });
}