我使用从 InitState() 调用的方法,其中使用等待加载 SP。 但是 Widget 在 SP 加载之前正在构建并且有空 SP 值。
void getSP() async {
var prefs = await SharedPreferences.getInstance();
_todoItems = prefs.getStringList("key") ?? _todoItems;
}
最佳答案
有很多选项,我喜欢的一个是像这样使用 bool 变量
bool isLoaded = false;
@override
void initState() {
getSP();
super.initState();
}
void getSP() async {
var prefs = await SharedPreferences.getInstance();
_todoItems = prefs.getStringList("key") ?? _todoItems;
setState(() => isLoaded = true);
}
然后检查它以确定构建树是否应该加载,就像这样..
@override
Widget build(BuildContext context) {
return !isLoaded ? CircularProgressIndicator() : Scaffold(...);
}
关于Flutter - 如何在加载共享首选项时暂停应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59950191/