Попытка напечатать текст Textfield из другого виджета и всегда печатать пустой (просто I / flutter (9049):) в flutter - PullRequest
0 голосов
/ 17 января 2020
TextEditingController _name = TextEditingController();

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

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

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

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

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

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

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

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

, но мне нужен способ без stati c

мой код выглядит так:

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,
  ),
...
}

secondClass

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

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

1 Ответ

1 голос
/ 17 января 2020

Изменить это

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

на

Future<String> randomFun() async {
    return Future.value(_name.text);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...