Проблема, когда я пытаюсь получить значение функции в Flutter/dart

#flutter #dart #flutter-layout #dart-polymer

Вопрос:

Привет, я не могу получить значение de value, которое возвращает мою функцию postTest()

                            String usuario = usernameController.text;
                                  print('Si $usuario');
                                  String password = passwordController.text;
                                  print('Password: $password');

                                  print("${postTest(usuario, password)}");
                                }
                              },
                            ),
                            Registrate(),
                          ],
                        ),
                      ),
                    ),
                  ),
                ),
              ),
              Container(
                padding: EdgeInsets.only(top: 500, left: 170),
                child: ImagenAmbulancia(),
              )
            ],
          ),
        ),
      ),
    );
  }

  postTest(usuario, password) async {
    final uri = 'http://10.0.2.2:5000/base/';

    http.Response response = await http
        .post(Uri.parse(uri), body: {"User": usuario, "Pass": password});
    var repuesta = response.body;
    String estadoUsuario = jsonDecode(repuesta)["respuesta"];
    return estadoUsuario;
  }
}
 

я пытаюсь сохранить значение, которое дает мне посттест, но я не могу … верни мне будущее , но мне нужна строка

Комментарии:

1. Поскольку это асинхронная функция, вам нужно дождаться результата, прежде чем использовать ее, вызовите метод с помощью await

2. @JorgeVieira, но когда я пытаюсь распечатать внутри функции postTest, например print(«$estadoUsuario»), я получаю значение … но когда я пытаюсь вызвать функцию типа String Value= postTest(обычно,пароль), я не могу получить значение, возвращающее estadoUsuario

Ответ №1:

когда вы хотите использовать свой метод, потому что его будущий тип (и будет заполнен в будущем) вы должны использовать .then при вызове своего метода следующим образом

 postTest(usuario, password).then((value) {
 print(value);
});