Флаттер задает значение для текстового поля

import os
cmd = 'ls -al'
os.system(cmd)

Если вы хотите вернуть результаты команды, вы можете использовать os.popen . Однако это не рекомендуется с версии 2.6 в пользу модуля подпроцесса , который хорошо освещает другие ответы.

0
задан Rafael Honda 4 March 2019 в 16:39
поделиться

1 ответ

Существует два способа доступа к тексту из TextField, как показано в документации Флаттера .

Первый - через обратный вызов onChanged, у которого есть параметр, который является текущим текстом.

TextField(
  onChanged: (text) {
    // do what you want with the text
  },
);

Для более сложной обработки текста, включая доступ к нему извне метода build(), вы можете использовать TextEditingController .

final _controller = TextEditingController();

Затем вы можете связать его с вашим TextField:

TextField(
  // other parameters
  controller: _controller,
);

Не забудьте утилизировать его!

@override
void dispose() {
  // other dispose methods
  _controller.dispose();
  super.dispose();
}

Теперь вы можете либо установить, либо получить текст либо получить доступ к значению _controller.text, либо изменить его. Например:

Получение: print(_controller.text);

Установка: _controller.text = 'newText' // now the TextField will have 'newText' written

Или вы можете прослушивать изменения, используя addListener, поэтому всякий раз, когда текст обновляется, Функция по вашему выбору будет называться:

@override
void initState() {
    super.initState();
    _controller.addListener(_handleText);
    // other code here
}

_handleText() {
   // do what you want with the text, for example:
   print(_controller.text);
}
0
ответ дан Dimitrie-Toma Furdui 4 March 2019 в 16:39
поделиться