Аргумент обратного вызова setState () возвратил флаттер будущего - PullRequest
0 голосов
/ 10 октября 2019

Когда я хотел получить свой токен, у меня была эта ошибка: аргумент обратного вызова setState () возвращал Future.

onPressed: () {
                    setState(() async {
                      if (_formKey.currentState.validate()) {
                        Candidate candidate = new Candidate(
                            lastname: lastname,
                            firstname: firstname,
                            email: email);
                        await candidate.candidateAuth(map: candidate.toMap());

                        Navigator.pushReplacement(
                            context,
                            MaterialPageRoute(
                                builder: (context) =>
                                    ThemePage(candidate: candidate)));
                      }
                    });
                  },

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

1 Ответ

1 голос
/ 10 октября 2019

setState необходимо получить чистую функцию без побочных эффектов.

Вы можете настроить это так, чтобы вы могли вызывать setState после асинхронной функции. Как это:

onPressed: () {

                      if (_formKey.currentState.validate()) {
                        Candidate candidate = new Candidate(
                            lastname: lastname,
                            firstname: firstname,
                            email: email);
                        await candidate.candidateAuth(map: candidate.toMap());

                        setState((){});

                        Navigator.pushReplacement(
                            context,
                            MaterialPageRoute(
                                builder: (context) =>
                                    ThemePage(candidate: candidate)));
                      }
                  },
...