变量没有被更改超出颤动的范围

2023-12-19

我有一个 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 长度打印为“2”,因此有对象被添加到列表中,但在循环范围之外它是空的,就像没有添加任何内容一样。


then is an async调用不是按顺序调用的,这就是为什么第二个打印语句没有给出长度

use:

@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());
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

变量没有被更改超出颤动的范围 的相关文章

随机推荐