Попытка распечатать текст текстового поля из другого виджета и всегда печатать пустым (просто I / flutter (9049) :) во флаттере

TextEditingController _name = TextEditingController();

Future<String> randomFun() async{
  return _name.text;
}

и в другом классе:

print(await(theFirstClass.randomFun()));

и он просто всегда печатает I / flutter (9049):

Я написал в текстовом поле, что оно должно иметь текстовое значение.

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

для более подробного объяснения: я не могу печатать текст TextField кнопкой в ​​другом виджете

это может сработать, если я добавил статику для _name как это static TextEditingController _name = TextEditingController();

но мне нужен способ без статики

мой код такой:

2 виджета с отслеживанием состояния на одной странице первый виджет FirstClass второй виджет SecondClass FirstClass

class FirstClassextends State<First> {
...
  TextEditingController_name = TextEditingController();

  Future<String> randomFun() async{
    return _name.text;
  }
...
  TextField(
  decoration: InputDecoration(labelText: 'Enter your name'),
  controller: _name,
  ),
...
}

Второй класс

class secondClassextends State<second> {
...
  FirstClass firstClass = FirstClass();
...
  IconButton(
    icon: Icon(Icons.person, color: Colors.white,),
    onPressed: ()async{
      print(await(firstClass.randomFun()));
    }
  ),

И снова мне нужно распечатать / получить текст TextField, нажав кнопку в другом виджете.


person Abdallah El-Rashedy    schedule 17.01.2020    source источник


Ответы (1)


Измените это

Future<String> randomFun() async{
    return _name.text;
  }

to

Future<String> randomFun() async {
    return Future.value(_name.text);
  }
person Naveen Avidi    schedule 17.01.2020