Как сделать так, чтобы текст реагировал с помощью текстового поля во флаттере - PullRequest
0 голосов
/ 01 мая 2019

У меня есть этот код, в нем у меня есть текст и текстовое поле, как я могу заставить текст заполнять вместе с тем же, что и текстовое поле реактивным способом.

Эта попытка сделать, но безполучение результатов.

class _MyHomePageState extends State<MyHomePage> {
  TextEditingController controller = TextEditingController();
  String aMostrar = "";
  @override
  Widget build(BuildContext context) {
    controller.text = "";
    controller.addListener(() {
      aMostrar = controller.text;
    });
    return Scaffold(
      appBar: AppBar(
        title: Text("TextField Example"),
      ),
      body: Container(
        margin: EdgeInsets.all(20.0),
        child: Center(
            child: Column(
          children: <Widget>[
            TextField(
              controller: controller,
            ),
            Text(aMostrar),
          ],
        )),
      ),
    );
  }
}

1 Ответ

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

Вам не нужно получать текстовое значение от контроллера, поскольку TextField уже предоставляет onChanged.

, а в пределах onChange вам нужно позвонить setState.

* 1008.* Как показано ниже:
TextField(
  onChanged: (value) {
    setState(() {
      aMostrar = value;
    });
  },
),

Если вы используете TextFormField, вам нужно позвонить setState внутри слушателя controller.

Как показано ниже:

controller.addListener(() {
  setState(() {
    aMostrar = controller.text;
  });
});
...