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,查看主帖子,我在下面添加模型