【发布时间】:2019-08-16 10:11:45
【问题描述】:
我想从 Shared Preferences 中渲染一些东西。
这是我的代码:
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 始终为空。
我想返回我在那个循环中找到的那个 singleObject。
谁能帮我解决这个问题???
【问题讨论】:
-
您要保存到共享首选项的部分在哪里?
-
我没有保存这个我只是从列表中获取匹配的对象。列表的列表保存和返回工作正常。
-
可能是您正在尝试检索数据,但它们没有带有密钥的数据。添加 ??像这样试试。最终列表 parsedList = json.decode(prefs.get(_kUserVehicles) ?? 0);
标签: flutter