Трепещите) Интересно, как удалить элементы из созданного списка, нажав кнопку

#android #ios #flutter

Вопрос:

Я нажимаю кнопку, чтобы добавить виджет ListTile в список и вывести его в ListViewBuilder. И я хочу удалить список, нажав кнопку удалить в каждом списке.

 Listlt;ListTilegt; _todoList = [];  

Кнопка Добавить список

 TextButton.icon(  onPressed: () {  //I wrote the text in a TextField in the Dialog Widget.  //And add ListTile widget to list  _todoList.add(_addListTile(_textController.text));  }  

Список выходных данных

 ListView.builder(  itemBuilder: (context, index) {  return _todoList[index];  },    itemCount: _todoList.length),  

Это виджет, который добавляется в список. И я хочу удалить индекс списка, нажав кнопку на плитке списка.

 _addListTile(String text) {  return ListTile(  title: Text(text),  //menu   trailing: PopupMenuButton(  // icon: const Icon(Icons.more_vert),  itemBuilder: (context) {  return [const PopupMenuItemlt;intgt;(value: 0, child: Text('Remove'))];  },  //Cliked menu   onSelected: (item) {  switch (item) {  case 0:  return print('Remove List');  // return _todoList.remove();  }  },  ),  onTap: () {},  );  }  

Как я могу удалить список с помощью кнопки удалить в этом окне списка?

Спасибо.

Ответ №1:

Я думаю, вы можете присвоить key значение каждому ListTile объекту, чтобы определить, какой элемент списка вы хотите удалять каждый раз, когда вы создаете его в своей _addListTile() функции, как показано ниже.

 _addListTile(String text) {  // You can have anything to be the unique value. Here, I just used the current time.  // I can't say this is the best option.  final key = ValueKey(DateTime.now().toString());    return ListTile(  key: key,  title: Text(text),  //menu   trailing: PopupMenuButton(  // icon: const Icon(Icons.more_vert),  itemBuilder: (context) {  return [const PopupMenuItemlt;intgt;(value: 0, child: Text('Remove'))];  },  //Cliked menu   onSelected: (item) {  switch (item) {  case 0:  print('Remove List');  return _todoList.removeWhere((e) =gt; e.key == key);  }  },  ),  onTap: () {},  );  }  

Я надеюсь, что это сработает для вас.