Выберите элемент listview, поместите значение в поле формы и закройте представление списка — Flutter

#flutter #listview #google-places-api #google-places

#flutter #listview #google-places-api #google-места

Вопрос:

У меня есть listview, который подключен к API Google places, и он обновляется по мере ввода пользователем адреса. Когда пользователь нажимает на адрес, я хочу, чтобы адрес был помещен в текстовое поле, а listview закрывался.

SelectedItem в приведенном ниже коде — это элемент, выбранный пользователем. Я пытаюсь обновить поле textformfield с помощью SelectedItem. Есть идеи?

TextFormFiled и ListView.builder:

     TextFormField(
      controller: _controller,
      decoration: textInputDecoration.copyWith(
          labelText: 'Address or Perferred City'),
    ),
    ListView.builder(
        physics: NeverScrollableScrollPhysics(),
        shrinkWrap: true,
        itemCount: _placeList.length,
        itemBuilder: (context, index) {
          return ListTile(
              title: Text(_placeList[index]["description"]),
              onTap: () {
                selectedItem = _placeList[index]["description"];
                print(selectedItem);
              });
        }),
 

Изображение listview, создаваемое в приложении:
введите описание изображения здесь

Ответ №1:

Здесь можно использовать if условие. Изначально selectedItem есть null , поэтому ListView виден, как только элемент выбран, он не равен нулю, поэтому мы скрываем ListView . Обязательно используйте setState в своем onTap методе. Простая демонстрация будет

 Column(
  children: [
    TextFormField(),
    if (selectedItem == null)
      ListView.builder(),
  ],
)