Выберите StatelessWidget или StatefulWidget для подчиненного виджета, который имеет TextEditingController - PullRequest
1 голос
/ 25 мая 2019

Я работаю над кодом рефакторинга, чтобы отделить маленький кусочек виджетов.Есть несколько столбцов с TextFields в каждом.

  1. Выберите StatelessWidget, поскольку он имеет большую производительность , может поместить код, связанный с TextEditingController, за пределы вспомогательных виджетов.Или включить некоторую логику в событие onChanged.но все же есть некоторые события, такие как clear text, которые нельзя вставить в onChanged событие

  2. Выберите StatefulWidget, если я использую TextEditingController, включите в каждый подвиджет виджет.

Как сделать выбор между StatelessWidget и StatefulWidget при выполнении кода рефакторинга для таких маленьких виджетов, как этот?


Обновление

Вот мой текущий вывод, который можно обновить, если он неверен.

  • Предпочитаю ставить FocusNode TextEdit in parent, поскольку он связан с братом focusNode & parentNode;
  • Предпочитатьпоставить TextEdtingController in parent, если этот TextField может быть вне экрана, как в длинном ListView, и в этом случае виджет дырки с размонтированным, поместить его в родительский элемент может сохранить текстовые состояния.
  • Предпочитать поставить animation self как встряхивание TextField при вводе что-то не так in self.Так как это своего рода функция self, не связанная с родителем.

1 Ответ

1 голос
/ 25 мая 2019

Отредактируйте в ответ на обсуждение в разделе комментариев:

Вы должны использовать второй подход при рефакторинге вашего кода в меньший StatefulWidgetsparent должен иметь функцию для изменения содержимого вложенных TextFields и его поведения animation путем вызова функций внутри него, как вы ранее указывали, что вам нужно управлять этим поведением.

...