SharedPreference 返回空颤动
Posted
技术标签:
【中文标题】SharedPreference 返回空颤动【英文标题】:SharedPreference returning null flutter 【发布时间】: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); 【参考方案1】:在返回值之前,您不会等待未来完成。
所以
return singleObject ?? null;
将在之前执行
getSelectedVehicleID()
你需要的是
int _selectedVehicleId = await getSelectedVehicleID();
然后继续从共享偏好中获取任何内容并返回。
希望这会有所帮助:)
【讨论】:
以上是关于SharedPreference 返回空颤动的主要内容,如果未能解决你的问题,请参考以下文章