Очистить ListView во Flutter - PullRequest
1 голос
/ 26 мая 2020

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

Я добавил names.clear (), но он кажется, что он очищает список за кулисами, а не в представлении.

Есть ли способ достичь этого?

class _NameViewListState extends State<NameViewList> {

  final List<String> names = <String>['Ahmed','Nana'];
  TextEditingController nameController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Settings'),
        centerTitle: true,
      ),
      body: Column(
        children: [
          IconButton(
            icon: Icon(Icons.queue, color: Colors.green,),
            onPressed: (){createDialog(context);},
          ),
          Padding(
            padding: EdgeInsets.all(20),
            child: TextField(
              controller: nameController,
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                labelText: 'Contact Name',
              ),
            ),
          ),
          RaisedButton(
            child: Text('Clear'),
            onPressed: () {
              names.clear();
            },
          ),
          Expanded(
            child: ListView.builder(
              itemCount: names.length,
                itemBuilder: (BuildContext context, int index){
                return Container(
                  height: 50,
                  child: Center(
                    child: Text('${names[index]}'),
                  ),
                );
                }),
          )
        ],
      ),
    );
  }
}

1 Ответ

1 голос
/ 26 мая 2020

Здесь следует использовать метод setState (), чтобы сообщить виджету об изменении конфигурации, поэтому необходимо изменить ссылочные виджеты.

  setState(() {
       names.clear();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...