[英]Flutter FutureBuilder inside another FutureBuilder, Taken From JSON array of Strings
[英]Flutter Json with array of strings into Futurebuilder
所以我有一個帶有字符串數組的JSON。 有人可以告訴我如何使用listview.builder在將來的構建器中顯示每個對象的用戶名。
我到處尋找,似乎找不到任何好的解決方案。
這是JSON樹:
{
"id": 81,
"users": [
{
"username": "hugo",
"fullname": "Hugo Johnsson"
},
{
"username": "studentone",
"fullname": "Student One"
}
],
"title": "test med teacher chat",
"description": "This project does not have a description.",
"subject": "No subject",
"deadline": "2019-01-06",
"days_left": "91 days ago",
"overview_requests": [
{
"id": 28,
"user": {
"username": "hugo",
"fullname": "Hugo Johnsson"
},
"group": 81
}
]
},
這是項目類:
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(TheAdress);
var jsonData = json.decode(data.body);
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["users"]);
allProjects.add(project);
}
return allProjects;
}
然后通過ui中的未來建設者明顯地運行它
FutureBuilder(
future: _getProjects(),
builder: (BuildContext context, AsyncSnapshot snapshot ) {
if (snapshot.data == null){
return Container(
child: Center(
child: CircularProgressIndicator(),
),
);
}
else return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(snapshot.data[index].users[index].username),
);
}
);
}
),
你可以得到這樣的用戶 -
var jsonUsers = JDate["users"];
然后像這樣迭代它們 -
for(int i = 0; i<users.length ; i++) {
var user = jsonUsers[i];
users.add(USER(user["username"], user["fullname"]));
}
從你的FutureBuilder
,我看到你有一個列表users
。 我剛剛創建了USER
對象並將它們添加到列表中。 這對你有幫助嗎?
//未來的未來> _getUSERS()async {
var data = await http.get("http://studieplaneraren.pythonanywhere.com/api/projects/${UserLog().Username}/?format=json");
var jsonData = json.decode(data.body); //an array of json objects
var userStrings = List;
for (var JData in jsonData) {
var jsonUsers = JData["users"];
for(int i = 0; i<jsonUsers.length ; i++) {
var user = jsonUsers[i];
jsonUsers.add(USER(user["username"], user["fullname"]));
}
}
}
我也試過這個,為什么它不起作用?
//THE FUTURE
Future> _getUSERS()async {
var data = await http.get("http://studieplaneraren.pythonanywhere.com/api/projects/${UserLog().Username}/?format=json");
var jsonData = json.decode(data.body); //an array of json objects
List<USER> users;
for (var JData in jsonData) {
var jsonUsers = JData["users"];
for(int i = 0; i<users.length ; i++) {
var user = jsonUsers[i];
users.add(USER(user["username"], user["fullname"]));
}
}
return users;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.