我想从共享首选项中渲染一些东西。
这是我的代码:
return FutureBuilder<ChildModel>(
future: sharedPreference.getData(),
builder: (context, snapshot) {
print("SNAPSHOT" + snapshot.data.toString());
if (snapshot.hasData &&
snapshot.data != null) {
return _render(snapshot,context);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
} else {
return Text('Select Vehicle');
}
},
);
我的共享偏好:
Future<ChildModel> getData() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
ChildModel singleObject ;
List<ChildModel> userVehicleList = [];
getSelectedVehicleID().then((onValue){
if(onValue!=null){
if (prefs.get(_kUserVehicles) != null) {
final List parsedList = json.decode(prefs.get(_kUserVehicles));
userVehicleList = parsedList.map<ChildModel>((val) => ChildModel.fromJson(val)).toList();
}
for (int i = 0; i < userVehicleList.length; i++) {
if (userVehicleList[i].id == onValue) {
singleObject = userVehicleList[i];
}
}
}
});
return singleObject ?? null;
}
问题是 singleObject = userVehicleList[i]
被执行但没有返回任何东西。
在 Future Builder 中,snapshot.data
始终为 null。
我想返回我在该循环中找到的那个 singleObject。
有人可以帮我解决这个问题吗???
最佳答案
在返回值之前,您不会等待 future 完成。
所以
return singleObject ?? null;
将在之前执行
getSelectedVehicleID()
你需要的是
int _selectedVehicleId = await getSelectedVehicleID();
然后继续从共享首选项中获取任何内容并将其返回。
希望对您有所帮助:)
关于flutter - SharedPreference 返回空抖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55350176/