Flutter - 如何在加载共享首选项时暂停应用程序?

标签 flutter dart

我使用从 InitState() 调用的方法,其中使用等待加载 SP。 但是 Widget 在 SP 加载之前正在构建并且有空 SP 值。

void getSP() async {
    var prefs = await SharedPreferences.getInstance();
    _todoItems = prefs.getStringList("key") ?? _todoItems;
  }

完整代码:https://pastebin.com/EnxfKgPH

最佳答案

有很多选项,我喜欢的一个是像这样使用 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/

相关文章:

android - 如何仅打印 json 映射中值的特定部分?

flutter - 如何设计自定义ListWheelScrollView像下面的图像在 flutter ?

Flutter 如何刷新 StreamBuilder?

flutter - 闪屏颜色在 flutter 中没有改变

dart - 以编程方式创建 Flex div

firebase-realtime-database - 如何使用 Flutter/Dart 检查节点是否存在于 Firebase 数据库中

ios - Flutter - 如何在没有用户交互的情况下推送到其他路由(如 onTap)?

Flutter - 未处理的异常 : type '_InternalLinkedHashMap<String, 动态>

flutter - 抽屉小部件打开时如何修改背景的淡入淡出效果?

android-studio - 如何在Flutter中仅为OutlineButton制作带下划线的边框