gpt4 book ai didi

flutter - SharedPreference 返回空抖动

转载 作者:IT王子 更新时间:2023-10-29 07:21:36 24 4
gpt4 key购买 nike

我想从共享首选项中渲染一些东西。

这是我的代码:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com