Rest 无效值:颤振中只有有效值为0:1

Rest 无效值:颤振中只有有效值为0:1,rest,api,flutter,dart,Rest,Api,Flutter,Dart,我使用FutureBuilder创建了一个UI,以显示rest api中的嵌套对象,但我不知道为什么,但在运行我的函数(在我的UI中)后,我的控制台会向我抛出此类错误: RangeError (index): Invalid value: Only valid value is 0: 1 我试着flatter博士,但对我没有帮助 另外,我不能使用itemCount:snapshot.data.length,因为 Class 'User' has no instance getter 'leng

我使用
FutureBuilder
创建了一个UI,以显示rest api中的嵌套对象,但我不知道为什么,但在运行我的函数(在我的UI中)后,我的控制台会向我抛出此类错误:

RangeError (index): Invalid value: Only valid value is 0: 1
我试着
flatter博士
,但对我没有帮助

另外,我不能使用
itemCount:snapshot.data.length
,因为

Class 'User' has no instance getter 'length'
我的代码:

@override
  void initState(){
    super.initState();
    userApiService = UserApiService();
    _future = getUserData();
  }

  getUserData() async{
    sharedPreferences = await SharedPreferences.getInstance();
    int id = sharedPreferences.getInt('id');
    return userApiService.getUser(id);
  }

  @override
  Widget build(BuildContext context){
    return FutureBuilder(
      future: _future,
      builder: (context, snapshot){
        if(!snapshot.hasData){
          return Scaffold(
            body: Center(
              child: CircularProgressIndicator(),
            ),
          );
        }
        // User user = snapshot.data;
        return Scaffold(
          backgroundColor: Colors.white,
          body: Container(
            child: ListView.builder(
              itemBuilder: (context, i){
                User user = snapshot.data;
                return GestureDetector(
                  onTap: () {
                    //
                  },
                  child: Container(
                    width: 300,
                    height: 80,
                    color: Colors.blue,
                    child: Text(user.myFollows[i].firstName + ' ' + user.myFollows[i].lastName),
                  ),
                );
              }
            )
          ),
        );
      },
    );
  }
模型用户:

class User {
  List<Observations> followedBy;
  List<Observations> myFollows;
  int id;
  String firstName;
  String lastName;

  User(
      {
      this.followedBy,
      this.myFollows,
      this.id,
      this.firstName,
      this.lastName,
});


  factory User.fromJson(Map<String, dynamic> json){
    return User(
      id: json['id'],
      firstName: json['firstName'],
      lastName: json['lastName'],
      followedBy: parseFollowedBy(json),
      myFollows: parseMyFollows(json),
    );
  }

  static List<Observations> parseFollowedBy(json){
    var lista = json['followedBy'] as List;
    List<Observations> followedByList = lista.map((data) => Observations.fromJson(data)).toList();
    return followedByList;
  }  

  static List<Observations> parseMyFollows(myFollowsJson){
    var list = myFollowsJson['myFollows'] as List;
    List<Observations> myFollowsList = list.map((data) => Observations.fromJson(data)).toList();
    return myFollowsList;
  }

}

List<User> usersFromJson(String jsonData){
  final data = json.decode(jsonData);
  return List<User>.from(data.map((item) => User.fromJson(item)));
}

User userFromJson(String jsonData){
  final data = json.decode(jsonData);
  return User.fromJson(data);
}

String userToJson(User data){
  final jsonData = data.toJson();
  return json.encode(jsonData);
}
类用户{
下面列出:;
清单如下;
int-id;
字符串名;
字符串lastName;
使用者(
{
其次是,
这一点如下:,
这个身份证,
这个名字,
这个姓,
});
factory User.fromJson(映射json){
返回用户(
id:json['id'],
firstName:json['firstName'],
lastName:json['lastName'],
followedBy:parseFollowedBy(json),
myFollows:parseMyFollows(json),
);
}
静态列表解析方式(json){
var lista=json['followedBy']作为列表;
List followedByList=lista.map((数据)=>Observations.fromJson(数据)).toList();
返回跟随列表;
}  
静态列表parseMyFollows(myFollowsJson){
var list=myFollowsJson['myFollows']作为列表;
List myFollowsList=List.map((数据)=>Observations.fromJson(数据)).toList();
返回myFollowsList;
}
}
列出usersFromJson(字符串jsonData){
最终数据=json.decode(jsonData);
返回List.from(data.map((item)=>User.fromJson(item));
}
用户userFromJson(字符串jsonData){
最终数据=json.decode(jsonData);
返回User.fromJson(数据);
}
字符串userToJson(用户数据){
final jsonData=data.toJson();
返回json.encode(jsonData);
}
模型观测。dart:

class Observations {
  final int id;
  final String firstName;
  final String lastName;

  Observations({this.id, this.firstName, this.lastName});

  factory Observations.fromJson(Map<String, dynamic> parsedJson) {
    return Observations(
      id: parsedJson['id'], 
      firstName: parsedJson['firstName'],
      lastName: parsedJson['lastName'],
      );
  }
}
课堂观察{
最终int id;
最后一个字符串名;
最后一个字符串lastName;
观察({this.id,this.firstName,this.lastName});
factory Observations.fromJson(Map parsedJson){
返回观测值(
id:parsedJson['id'],
firstName:parsedJson['firstName'],
lastName:parsedJson['lastName'],
);
}
}

感谢您的帮助:)

在这种情况下,您必须将
itemCount
设置为在
列表视图中遍历的列表长度

我看到您正在使用用户。myFollows[I]

因此,也许你应该使用:

itemCount: user.myFollows.length,

为什么
对象
?它应该是
List
我在下面的主帖子中添加我必须返回许多对象的列表,这就是为什么我使用ListView,查看主帖子,我在下面添加模型