#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: () {}, ); }
Я надеюсь, что это сработает для вас.