Виджет автозаполнения студии Android не очищает текстAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Виджет автозаполнения студии Android не очищает текст

Сообщение Anonymous »

У меня есть виджет автозаполнения Flutter для Android

Код: Выделить всё

             Autocomplete(

optionsBuilder: (TextEditingValue textEditingValue) {

if (textEditingValue.text.isEmpty) {
return const Iterable.empty();
}
return animalSuggestions.where((option) {
return option.toLowerCase().contains(textEditingValue.text.toLowerCase());
});

},

onSelected: (String selection) {
_animalController.text = selection; // Explicitly set value
},

fieldViewBuilder: (BuildContext context, TextEditingController textEditingController, FocusNode focusNode, VoidCallback onFieldSubmitted) {
return TextField(
controller: textEditingController,  // Use internal controller to manage suggestions
focusNode: focusNode,
decoration: InputDecoration(
labelText: 'Search Animal',
border: OutlineInputBorder(),
),
);
},

optionsViewBuilder: (BuildContext context, AutocompleteOnSelected onSelected, Iterable options) {
return Align(
alignment: Alignment.topLeft,
child: Material(
elevation: 4.0,
child: SizedBox(
height: 200.0, // Set a fixed height for the options list
child: ListView.builder(
padding: EdgeInsets.all(8.0),
itemCount: options.length,
itemBuilder: (BuildContext context, int index) {
final String option = options.elementAt(index);
return ListTile(
title: Text(option),
onTap: () {
onSelected(option);
},
);
},
),
),
),
);
},

),
В моем классе я объявляю TextEditingController под названием _animalController, который использую для получения значения, выбранного из раскрывающегося списка автозаполнения

Код: Выделить всё

  List animalSuggestions = [];
TextEditingController _animalController = TextEditingController();
Кажется, все работает нормально, пока я не попытаюсь очистить текст в виджете автозаполнения с помощью этого кода

Код: Выделить всё

    _animalController.clear();
Я вижу, что текст _animalController очищается, но текст, отображаемый в виджете автозаполнения, остается. Я понимаю, что это связано с тем, что виджет использует внутренний textEditingController для отображения текста. И мне нужно либо очистить это (я не знаю, как это сделать), либо мне нужно изменить внутренний textEditingController на _animalController (который я контролирую). Но когда я это делаю, моя логика optionsBuilder (которая, очевидно, контролирует фильтрацию раскрывающегося списка при вводе текста) перестает работать, и я больше не вижу никаких предложений. Есть идеи, как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/792 ... clear-text
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»