Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter RangeError(索引):无效值:有效值范围为空:-1_Flutter_Dart - Fatal编程技术网

Flutter RangeError(索引):无效值:有效值范围为空:-1

Flutter RangeError(索引):无效值:有效值范围为空:-1,flutter,dart,Flutter,Dart,尝试从服务器获取json并将其放入字符串变量中 var allData; var userMapOfInfo; var url = "my url"; var response1 = await http.get(url); try { userMapOfInfo = jsonDecode(response1.body); //here i'm sure there is valid json data print(userMapOfInfo); a

尝试从服务器获取json并将其放入字符串变量中

var allData;
var userMapOfInfo;
var url =
      "my url";
  var response1 = await http.get(url);
  try {
    userMapOfInfo = jsonDecode(response1.body); //here i'm sure there is valid json data
    print(userMapOfInfo); 
    allData = response1.body;  //this line cause the error
  } catch (e) {
    return "yok";
  }
完全例外:

[VERBOSE-2:ui\u dart\u state.cc(148)]未处理的异常:RangeError(索引):无效值:有效值范围为空:-1
#0列表。[](dart:core patch/Growtable_阵列。dart:147:60)

#1 List.elementAt(dart:core patch/growtable_array.dart:356:16)

我不知道为什么android studio会在与实际错误无关的代码行中显示错误,在问题代码下方有这段代码

var examsLastExamId = 0;
 try {
    var exams = userMapOfInfo['student_exams'];
    if (exams != null)
      examsLastExamId = exams.elementAt(exams.length - 1)['id'];

  } finally{
  print(examsLastExamId);
 }
问题如下:exams不是null,但它是空数组,因此它通过了null检查if条件,在这一行中
examslatexamid=exams.elementAt(exams.length-1)['id']通过异常进行检查,因为考试没有数据,所以通过将条件更正为以下情况很容易解决此问题:

        if (exams != null && exams.length > 0)

更正这段代码不是什么大不了的事,但是当android studio在另一个代码行抛出异常时,很难知道错误在哪里,因为它与所需的代码行相距甚远

我假设变量
url
实际上包含一个url,对吗?我会在try-catch语句处放置一个断点并逐步执行。@Benjamin S。是的,它有一个url,是的,我放置了断点,从服务器获取数据工作正常,Json解码也正常,但当我试图将Json字符串放入allData变量时出现异常