如何创建显示从JSON获取的字符串数组的Flatter Futurebuilder函数?
我在Flitter中有一个项目管理应用程序,并将这些项目排列在列表视图中。我从JSON中的API获取数据,并希望显示正在项目中工作的用户 JSON: 颤振内的类别:如何创建显示从JSON获取的字符串数组的Flatter Futurebuilder函数?,json,api,listview,flutter,future,Json,Api,Listview,Flutter,Future,我在Flitter中有一个项目管理应用程序,并将这些项目排列在列表视图中。我从JSON中的API获取数据,并希望显示正在项目中工作的用户 JSON: 颤振内的类别: class Project { final int id; final String title; final String description; final String deadline; final String subject; final String days_left; final Li
class Project {
final int id;
final String title;
final String description;
final String deadline;
final String subject;
final String days_left;
final List<USER> users;
Project(
this.id,
this.title,
this.description,
this.deadline,
this.subject,
this.days_left,
this.users
);
}
class USER {
final String username;
final String fullname;
USER(
this.username,
this.fullname
);
}
小装置
服务
Future\u getProjects()异步{
var data=wait http.get(--address--);
var jsonData=json.decode(data.body);//json对象的数组
列出所有项目=[];
for(jsonData中的var JData){
列表用户=JData[“用户”]==null
? []
:JData[“用户”]
.map((userJson)=>USER(“用户名”、“全名”)//新代码
项目=项目(
JData[“id”],
JData[“标题”],
JData[“说明”],
JData[“截止日期”],
JData[“主题”],
JData[“剩余天数”],
用户,
);
所有项目。添加(项目);
}
归还所有项目;
}
Widget
服务
Future\u getProjects()异步{
var data=wait http.get(--address--);
var jsonData=json.decode(data.body);//json对象的数组
列出所有项目=[];
for(jsonData中的var JData){
列表用户=JData[“用户”]==null
? []
:JData[“用户”]
.map((userJson)=>USER(“用户名”、“全名”)//新代码
项目=项目(
JData[“id”],
JData[“标题”],
JData[“说明”],
JData[“截止日期”],
JData[“主题”],
JData[“剩余天数”],
用户,
);
所有项目。添加(项目);
}
归还所有项目;
}
flatter:引发了另一个异常:NoSuchMethodError:对null调用了getter“length”。颤振:引发了另一个异常:NoSuchMethodError:对null调用了方法“[]”。仍然对null调用了getter“length”错误可能您的用户列表为null。检查您的_getprojects功能。在此之后,您必须进行调试。我知道但我不明白如何执行:JData[USER(“username”,“fullname”)]您有什么想法吗?flatter:引发了另一个异常:NoSuchMethodError:对null调用了getter“length”。颤振:引发了另一个异常:NoSuchMethodError:对null调用了方法“[]”。仍然对null调用了getter“length”错误可能您的用户列表为null。检查您的_getprojects功能。我知道,但我不明白怎么做:JData[USER(“username”,“fullname”)]你有什么想法吗?
class Project {
final int id;
final String title;
final String description;
final String deadline;
final String subject;
final String days_left;
final List<USER> users;
Project(
this.id,
this.title,
this.description,
this.deadline,
this.subject,
this.days_left,
this.users
);
}
class USER {
final String username;
final String fullname;
USER(
this.username,
this.fullname
);
}
Future<List<Project>> _getProjects() async {
var data = await http.get(--ADRESS--);
var jsonData = json.decode(data.body); //an array of json objects
List<Project> allProjects = [];
for (var JData in jsonData) {
Project project = Project(
JData["id"],
JData["title"],
JData["description"],
JData["deadline"],
JData["subject"],
JData["days_left"],
JData[USER("username", "fullname")]
allProjects.add(project);
}
return allProjects;
}
Text(snapshot.data[index].users.username
Widget build(BuildContext context) {
return FutureBuilder(
future: _getProjects(),
builder: (context, snapshot) => ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) => ListView.builder(
itemCount: snapshot.data[index].users.length,
itemBuilder: (context, userIndex) => Text(snapshot.data[index].users[userIndex].username[0]),
),
),
);
}
Future<List<Project>> _getProjects() async {
var data = await http.get(--ADRESS--);
var jsonData = json.decode(data.body); //an array of json objects
List<Project> allProjects = [];
for (var JData in jsonData) {
List<USER> users = JData["users"] == null
? []
: JData["users"]
.map( (userJson) => USER("username", "fullname") ) // new code
Project project = Project(
JData["id"],
JData["title"],
JData["description"],
JData["deadline"],
JData["subject"],
JData["days_left"],
users,
);
allProjects.add(project);
}
return allProjects;
}