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

时间:2019-12-09 18:39:56

标签: flutter dart

试图从服务器获取json并将其放入String变量

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_dart_state.cc(148)] Unhandled Exception: RangeError (index): Invalid value: Valid value range is empty: -1 #0 List.[] (dart:core-patch/growable_array.dart:147:60) #1 List.elementAt (dart:core-patch/growable_array.dart:356:16)

1 个答案:

答案 0 :(得分:0)

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

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

  } finally{
  print(examsLastExamId);
 }

问题如下:考试不是null,而是空数组,因此它通过我的null检查条件是否存在,在这一行examsLastExamId = exams.elementAt(exams.length - 1)['id'];中通过异常进行了处理,因为考试没有数据,这非常通过将条件更正为此即可轻松解决此问题:

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

更正此代码不是什么大问题,但是很难知道当android studio在远离所需行的另一行代码中抛出异常时,错误在哪里