Отображение неправильных данных в текстовом поле, изменяемое при трепетании

#flutter #dart #datatable #row

Вопрос:

Я получаю эту ошибку и ищу ответ. Прямо ниже приведен мой код, и когда я удаляю строку, она показывает неправильное количество товаров и цену товара в текстовом поле таблицы, даже исходные данные работают правильно, например, находят сумму количества или общую цену товаров.

Вот мой код для редактирования таблицы.

     Iterable<DataRow> dataRows = items.map((item) {
      return DataRow(
          selected: selectedItems.contains(item),
          onSelectChanged: (b) {
            print("OnSelect");
            onSelectedRow(b!, item);
          },
          cells: [
            DataCell(
              Text(item.itemName),
            ),
            DataCell(
                TextFormField(
                  initialValue: item.itemQty.toString(),
                  onFieldSubmitted: (valueToo) {
                    int x1 = int.parse(valueToo);
                    item.itemQty = x1;
                    total = 0;
                    sum();
                  },
                ),
                showEditIcon: true),
            DataCell(
                TextFormField(
                  initialValue: item.itemPrice.toString(),
                  onFieldSubmitted: (valueUne) {
                    int z1 = int.parse(valueUne);
                    item.itemPrice = z1;
                    total = 0;
                    sum();
                  },
                ),
                showEditIcon: true),
          ]);
    }).toList();
    return dataRows;
  }
 

Это мои функции

   onSelectedRow(bool selected, Item item) async {
    setState(() {
      if (selected) {
        selectedItems.add(item);
      } else {
        selectedItems.remove(item);
      }
    });
  }

  onSortColum(int columnIndex, bool ascending) {
    if (columnIndex == 0) {
      if (ascending) {
        items.sort((a, b) => a.itemName.compareTo(b.itemName));
      } else {
        items.sort((a, b) => b.itemName.compareTo(a.itemName));
      }
    }
  }

  deleteSelected() async {
    setState(() {
      if (selectedItems.isNotEmpty) {
        List<Item> temp = [];
        temp.addAll(selectedItems);
        for (Item item in temp) {
          items.remove(item);
          selectedItems.remove(item);
        }
      }
      total = 0;
      une1 = total.toString();
      sum();
    });
  }

  sum() async {
    setState(() {
      niilber = items.fold(
          0,
          (itemPrice, element) =>
              itemPrice   element.itemPrice * element.itemQty);
      shirheg = items.fold(0, (itemQty, element) => itemQty   element.itemQty);

      too1 = shirheg.toString();
      une1 = niilber.toString();

      _itemController.clear();
      _qtyController.clear();
      _priceController.clear();
    });
  }

 

Спасибо вам за ваше время и надеюсь, что вы поможете мне разобраться в этом.