下面的代码显示
E/flutter ( 7354): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Exception: RangeError (index): Invalid value: Not in inclusive range 0..17: 18
E/flutter ( 7354): #0 List.[] (dart:core-patch/growable_array.dart:254:60)
E/flutter ( 7354): #1 parseStudent (package:xxx/screens/SearchActivity/main.dart:22:19)
E/flutter ( 7354): #2 _IsolateConfiguration.apply (package:flutter/src/foundation/_isolates_io.dart:81:34)
E/flutter ( 7354): #3 _spawn.<anonymous closure> (package:flutter/src/foundation/_isolates_io.dart:88:65)
E/flutter ( 7354): #4 _spawn.<anonymous closure> (package:flutter/src/foundation/_isolates_io.dart:87:5)
E/flutter ( 7354): #5 Timeline.timeSync (dart:developer/timeline.dart:163:22)
E/flutter ( 7354): #6 _spawn (package:flutter/src/foundation/_isolates_io.dart:85:35)
E/flutter ( 7354): #7 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:286:17)
E/flutter ( 7354): #8 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
这个错误。
代码:
Map<String, dynamic> map = json.decode(responseBody);
List<dynamic> data = map["students"];
//developer.log(data[0]);
List<Student> stL = List<Student>();
for(int i=0;data[i]!=null;i++){
Student student = Student(rollno:data[i]["username"],name:data[i]["name"],
hostel:data[i]["hostel"],room:data[i]["room"],gender:data[i]["gender"]);
stL.add(student);
}
developer.log(stL.toString());
return stL;
developer.log()
不是called.Can吗?有没有人给出一个解决方案?或者是否有更好的方法将JSON解析为Student
列表?
发布于 2021-07-05 13:21:36
使用Iterable
而不是List<dynamic>
。
Iterable list = map['students'];
list.forEach((element){
Student student = Student(rollno:element["username"],name:element["name"],
hostel:element["hostel"],room:element["room"],gender:element["gender"]);
stL.add(student);
});
发布于 2021-07-05 13:52:01
@Tipu解决方案是可以接受的,但dart可以提供更灵活的方式。您还可以使用List
的from
命名构造函数。
List<Student> stL = List<Student>.from(map['students'].map((element) =>
Student(rollno:element["username"],name:element["name"],
hostel:element["hostel"],room:element["room"],gender:element["gender"])
).toList());
https://stackoverflow.com/questions/68250948
复制相似问题