в чем ошибка в моем коде, которая дает мне «Отклоненный недопустимый виджет все еще является частью дерева»?

#flutter #dart

Вопрос:

  1. когда я пытаюсь удалить первый элемент, поменяв его местами, диалоговое окно предупреждения отображается так, как я его закодировал, но в нем говорится: «вы хотите удалить элемент номер 2», и это не номер 2, а номер 1.
  2. после того, как я нажму кнопку «отменить» в предупреждении, он удалит первый элемент и добавит «элемент номер 2», и теперь у меня есть два элемента под названием «элемент номер 2».
  3. когда я пытаюсь поменять местами «пункт номер 2», программа выходит из строя и выдает мне эту ошибку

«Отклоненный недопустимый виджет по-прежнему является частью дерева. Убедитесь, что реализован обработчик onDismissed, и немедленно удалите Недопустимый виджет из приложения после запуска этого обработчика».

 import 'package:flutter/material.dart';  class DismissibleList extends StatefulWidget {  const DismissibleList({Key? key}) : super(key: key);  @override  _DismissibleListState createState() => _DismissibleListState(); }  class _DismissibleListState extends State<DismissibleList> {  final List item = List.generate(20, (index) => 'item num ${index   1}');  @override  Widget build(BuildContext context) {  return Scaffold(  body: ListView.builder(  itemCount: item.length,  itemBuilder: (context, index) {  return Dismissible(  key: Key(item[index]),  background: Container(  color: Colors.teal,  ),  secondaryBackground: Container(  color: Colors.red,  ),  onDismissed: (dr) {  setState(() {  item.removeAt(index);  });  print(item[index]);  showDialog(  context: context,  builder: (BuildContext ctx) {  return AlertDialog(  content: Text('you want to delete ${item[index]}'),  actions: [  TextButton(  onPressed: () {  print(item[index]);  setState(() {  item.insert(index, item[index]);  Navigator.of(context).pop();  });  },  child: Text('Undo'),  ),  ],  );  });  },  child: ListTile(  title: Center(  child: Text(item[index]),  ),  ),  );  },  ),  );  } }