#flutter
#flutter
Вопрос:
я создаю простое приложение, которое печатает результат текущего TextFormField
. Например, когда текст изменяется, он печатает новое значение.
Я узнал, что вы можете добиться этого с TextEditingController.addListener
помощью этого, который прослушивает изменения и выполняет функцию.
Итак, я завернул все это в initState следующим образом
@override
void initState() {
addressController.addListener(() {
print(addressController.text);
});
Проблема, с которой я сталкиваюсь, заключается в том, что иногда он записывает изменения, даже если их нет:
Это то, что происходит при написании слова, а затем его удалении.
Комментарии:
1. Есть ли у вас .removeListener в коде?
2. ehm … где я должен его иметь?
Ответ №1:
Если вы добавляете слушателя, вам следует его где-нибудь удалить, иначе может возникнуть ситуация, когда у TextEditingController будет 2 или более слушателей:
@override
void initState() {
addressController.addListener(_addressControllerListener);
super.initState()
}
void _addressControllerListener() {
print(addressController.text);
}
@override
void dispose() {
addressController.removeListener(_addressControllerListener);
super.dispose()
}
Комментарии:
1. очень любопытно! благодаря share. dispose — это самое крутое.