Во 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 и снова открыть его, то список отображается верно. Но, как понимаете, постоянно открывать и закрывать виджет для обновления данных - решение слишком костыльное и неудобное.


Ответы (0 шт):