Возможно, вы захотите создать новый тип настраиваемого виджета для каждой строки .
Вы можете использовать
TextEditingController
(где вы вызываете соответствующий контроллер
on click
или
TextField
обратный вызов onChanged
(где вы сохраняете новое значение для
соответствующий пункт on change
В обоих случаях у вас есть несколько неприятный список текстовых контроллеров или строковых значений .
Помните, ListView.builder будет собирать только те элементы, которые находятся в или около области просмотра (при прокрутке).
строитель вызывается только для тех детей, которые на самом деле видны
Это означает, что вы можете построить одну и ту же строку несколько раз (
Рассмотрите возможность использования собственного виджета для каждой строки (расширение StatefulWidget
)
Это облегчит координацию, связанную со всеми ролями, и подтолкнет любое результирующее состояние дальше вниз по дереву к конечным узлам
При использовании TextEditingController
:
- у вас есть только один контроллер для беспокойства
- вызов
_textController.dispose()
в методе dispose()
виджета
При использовании обратного вызова onChanged (доступно для TextField
, а не TextFormField
)
- создать переменную String как состояние в пользовательском виджете
inputValue
- обрабатывать нулевые случаи
- читать из этого при нажатии кнопки
Похоже, TextEditingController может быть самым простым, но я хотел бы упомянуть оба варианта для вашего рассмотрения.