Я получаю свои данные из API, а также добавляю свои данные в API. Я сталкивался с этой ошибкой при добавлении people.add(resp[0]); in addPeople()
:
RangeError (index): недопустимое значение: не в диапазоне 0..7, включительно: 8
Я добавляю это people.add(resp[0]);
, потому что я хочу показать после добавления данных. Это связано с тем, что после добавления данных добавленные данные не отображаются.
Вот мой код:
List people;
List selectedPeople = [];
List checkBox = [];
@override
void initState() {
super.initState();
}
void addPeople(name) async {
http.Response response = await http.post(url, body: {'name': name});
final resp = json.decode(response.body);
setState(() {
Navigator.of(context).pop();
people.add(resp[0]);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
actions: <Widget>[
IconButton(
icon: Icon(Icons.add_circle_outline),
onPressed: () {
_asyncInputDialog(context);
}
),
]
),
body: _buildListView(),
);
}
Widget _buildListView() {
return ListView.separated(
itemCount: people == null ? 0 : people.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(people[index]['name']),
trailing: Checkbox(
value: checkBox[index],
onChanged: (value) {
if (value) {
setState(() {
checkBox[index] = true; selectedPeople.add(people[index]);
});
} else {
setState(() {
checkBox[index] = false; selectedPeople.remove(people[index]);
});
}
},
),
);
},
separatorBuilder: (context, index) {return Divider();},
);
}
}