У меня есть JSON, и у меня нет проблем с отображением только строк, но моя проблема - массивы строк. У меня есть функция Future, которая берет данные из JSON и затем отображает их в будущем.
Итак, чтобы было ясно, я хочу, чтобы имена пользователей: "hugo" и "studentone" отображались в 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
}
]
},
Функция будущего:
Будущее> _getUSERS () async {
var data = await http.get("IP");
var jsonData = json.decode(data.body);
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"]));
}
}
Пользовательский интерфейс:
child: FutureBuilder(
future: _getUSERS(),
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].username),
);
}
);
}
),