#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);
});
}),
Ответ №1:
Здесь можно использовать if
условие. Изначально selectedItem
есть null
, поэтому ListView
виден, как только элемент выбран, он не равен нулю, поэтому мы скрываем ListView
. Обязательно используйте setState
в своем onTap
методе. Простая демонстрация будет
Column(
children: [
TextFormField(),
if (selectedItem == null)
ListView.builder(),
],
)