Во Flutter в listview.builder при удалении объекта всегда удаляется последний
возникла такая проблема: у меня имеется в приложении ModalBottomSheet, в котором есть ListView.builder. Если коротко, то в каждой строке ListView есть два поля ввода данных и кнопка удаления строки. Но на какой бы строке не была нажата кнопка удаления, удаляется всегда последняя. Вот мой код:
List<Price> price = PriceUtils.getPrice();
// Далее мой код
child: ListView.builder(
primary: false,
itemCount: price.length,
itemBuilder: ((context, index) {
return Column(
children: [
SizedBox(
height: 50,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
SizedBox(
height: 45,
width: 60,
child: TextFormField(
initialValue: (price[index].priceID !=-1)
? price[index].priceID.toString()
: null,
textInputAction: TextInputAction.next,
decoration: InputDecoration(
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: const BorderSide(
color: Color.fromARGB(204,199,199,199))),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10))))),
const SizedBox( width: 15),
SizedBox(
height: 45,
width: 100,
child: TextFormField(
initialValue: (price[index].priceID !=-1)
? price[index].priceCount.toString()
: null,
textInputAction: TextInputAction.done,
decoration: InputDecoration(
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: const BorderSide(
color: Color.fromARGB(204, 199, 199,199))),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10))))),
SizedBox(
width: MediaQuery.of(context).size.width * 0.35 ),
IconButton(
icon: const Icon(Icons.cancel_outlined),
color: Colors.redAccent,
onPressed: () {
setState(() {
price.removeAt(index);});},)
Точнее последний элемент удаляется только визуально, в самом списке price всё удаляется верно, то есть если закрыть ModalBottomSheet и снова открыть его, то список отображается верно. Но, как понимаете, постоянно открывать и закрывать виджет для обновления данных - решение слишком костыльное и неудобное.