首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示RangeError颤动的for循环

显示RangeError颤动的for循环
EN

Stack Overflow用户
提问于 2021-07-05 13:09:05
回答 2查看 42关注 0票数 0

下面的代码显示

代码语言:javascript
运行
复制
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)

这个错误。

代码:

代码语言:javascript
运行
复制
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列表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-05 13:21:36

使用Iterable而不是List<dynamic>

代码语言:javascript
运行
复制
  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);
  });
票数 1
EN

Stack Overflow用户

发布于 2021-07-05 13:52:01

@Tipu解决方案是可以接受的,但dart可以提供更灵活的方式。您还可以使用Listfrom命名构造函数。

代码语言:javascript
运行
复制
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());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68250948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档