【发布时间】:2022-01-26 15:05:02
【问题描述】:
我的代码有问题:我的目标是从 sharedprefs 中获取数据,然后使用存储的数据。问题是我从 sharedprefs 获取数据的函数太慢了,或者换句话说,我调用获取数据的函数的函数太快了。
流程应该是:在main.dart我调用了一个函数getDataString(),在sharedPreferences.dart文件中,-->函数getDataString()应该从sharedprefs中获取数据-->数据应该打印出来。
使用我的代码,我得到的结果为 null,但是当我第二次打印变量 savedData 时,我得到了我正在寻找的结果。所以我认为 getDataString 函数太慢了。怎么才能等到函数完成?
这是我试过的代码:
这是来自sharedPreferences.dart 文件的getDataString() 函数:
Future<String> getDataString() async {
final prefs = await SharedPreferences.getInstance();
savedData = jsonDecode(prefs.getString("savedData"));
}
这是来自main.dart 的initState:
void initState() {
super.initState();
getData();
log(savedData.toString());
});
}
【问题讨论】:
-
GetDataString 返回一个未来,要么你需要等待,要么使用然后阻塞
-
我该怎么做?抱歉,我对扑腾还很陌生……
-
使用 then:
getDataString().then( (savedData) => log(savedData.toString());) -
可以查看this
-
@MidhunMP 当我尝试你推荐的代码时,我仍然得到 null 作为结果
标签: flutter dart asynchronous async-await sharedpreferences