gpt4 book ai didi

flutter - 变量没有被改变到 flutter 的范围之外

转载 作者:行者123 更新时间:2023-12-03 02:46:30 24 4
gpt4 key购买 nike

我有一个 Future 列表和对象列表,我正在使用“.then”访问 Future 列表,并且在同一范围内我将对象添加到对象列表中。这是代码:

   List<Etablissement> etablist = new List<Etablissement>() ;
//AfficherEtablissement() returns Future<dynamic>
etabController.AfficherEtablissement().then((value) =>
value.forEach((entry) {
int id = entry["id"];
Etablissement et = new Etablissement(id);
this.etablist.add(et) ;
print("etablist length inside the loop "+etablist.length().toString());
})
) ;
print("etablist length outside the loop "+etablist.length().toString());

循环内的 etablist 长度为 printng '2',因此有对象被添加到列表中,但在循环范围外它是空的,就像没有添加任何东西一样。

最佳答案

then 是一个 async 调用,它不是按顺序调用的,这就是为什么第二个 print 语句没有给出长度

使用:

@override
void initState() {
super.initState();
asyncInitState(); // async is not allowed on initState() directly
}

void asyncInitState() async {
var value = await etabController.AfficherEtablissement();
value.forEach((entry) {
int id = entry["id"];
Etablissement et = new Etablissement(id);
this.etablist.add(et) ;
print("etablist length inside the loop "+etablist.length().toString());
})
print("etablist length outside the loop "+etablist.length().toString());
}

关于flutter - 变量没有被改变到 flutter 的范围之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63297466/

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