方法'[]'在Flutter中被调用为null

时间:2020-03-16 15:14:27

标签: flutter dart

我想将方法​​'getData()'返回的数据放入列表'datat',但出现此错误 :'方法'[]'在null'
上被调用 这是相应的代码:

ListeMedecinsState() {
    /* Fetching Data Into ListView */

    Future<String> getData() async {
      var response = await http.get(
          Uri.encodeFull("http://10.0.2.2:4000/user/GetAllMedecins"),
          headers: {
            "Accept": "application/json"
          }
      );

      this.setState(() {

        this.data = json.decode(response.body);
      });


      return "Success";
    }

    getData()  ;
    print(this.data[1]["email"]);

    /* Fetching Data Into ListView */
  }

注意:当我将数据检索到方法内部的列表中时,它没有显示错误,我想在方法范围之外使用数据,我该怎么办?

4 个答案:

答案 0 :(得分:2)

此外,您也可以这样:

getData().then((data){
    //do something with data
});

答案 1 :(得分:1)

您应 <Variable> = @() await

但是请发布您的完整代码,以便于理解。

谢谢

答案 2 :(得分:1)

@塞巴斯蒂安是正确的。 (所以选择他的答案不是我的。我只在这里发布,这样您可以看到完整的代码)您的代码应为:

ListeMedecinsState() async {  // <-- this has to be added as well 
    /* Fetching Data Into ListView */

    Future<String> getData() async {
      var response = await http.get(
          Uri.encodeFull("http://10.0.2.2:4000/user/GetAllMedecins"),
          headers: {
            "Accept": "application/json"
          }
      );

      this.setState(() {

        this.data = json.decode(response.body);
      });


      return "Success";
    }

    await getData()  ;  // <--- your code needs to pause until the Future returns.
    print(this.data[1]["email"]);

    /* Fetching Data Into ListView */   }

答案 3 :(得分:0)

正如塞巴斯蒂安所说,您的ListeMedecinState应该是异步的。 这样您就可以等待请求,然后仅继续完成。

您的代码实际上在继续操作之前并不等待getData()方法的结果。 因此,您应先等待,然后再尝试访问获取的数据!

希望这会有所帮助!

(似乎您会讲法语,我也讲法语,以防万一您迷路了:)