Флаттер, как распоряжаться textController - PullRequest
0 голосов
/ 21 апреля 2020

Я изучаю Flutter, и у меня в приложении есть два textFields, связанные с textControllers в AlertDialog, чтобы получить ввод от пользователя в виде текста и отобразить его в карточках в теле экрана. Моя проблема, которую я не могу решить самостоятельно, заключается в том, что после того, как я добавил setState (() {}) в кнопку «Сохранить» AlertDialog, текст будет отображаться на экране в теле, а после это изменение текста, введенного в TextFields, не очищается после нажатия кнопки «Сохранить».

Мой код:

class _HomeScreenState extends State<HomeScreen> {
  final TextEditingController titleController = TextEditingController();
  final TextEditingController textController = TextEditingController();
  DummyDataProvider notes;

  @override
  void dispose() {
    // Clean up the controller when the widget is disposed.
    titleController.dispose();
    textController.dispose();
    super.dispose();
  }

Текстовые контроллеры, о которых идет речь:

MaterialButton(
                  onPressed: () {
                    setState(() {
                      final title = titleController.text;
                      final text = textController.text;
                      NoteProvider.insertNote({'title': title, 'text': text});
                      Navigator.pop(context);
                    });

Что я подразумеваю под текстом без удаления: https://imgur.com/a/8pyTPM7, https://imgur.com/a/lr8a3Eh

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Вы можете сбросить текстовые контроллеры.

Например, в нажатом состоянии:

titleController = new TextEditingController();

textController = new TextEditingController();

Установка состояния не требуется для этого.

0 голосов
/ 22 апреля 2020
TextEditingController 

Это очень дорогой объект, не создавайте его часто

, просто используйте

TextEditingController.text == '';

, чтобы очистить текст,

...