Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建显示从JSON获取的字符串数组的Flatter Futurebuilder函数?_Json_Api_Listview_Flutter_Future - Fatal编程技术网

如何创建显示从JSON获取的字符串数组的Flatter Futurebuilder函数?

如何创建显示从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

我在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 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;

}