setState() 回调参数返回一个 Future flutter

May*_*iXx 1 mobile flutter flutter-layout

当我想获取我的令牌时,我遇到了这个错误: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)));
                      }
                    });
                  },
Run Code Online (Sandbox Code Playgroud)

问题是,当我继续使用我的应用程序时,我遇到了更多线程问题。

Rod*_*tos 5

setState 需要接收一个没有副作用的纯函数。

您可以调整它,以便可以在 async 函数之后调用 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)));
                      }
                  },
Run Code Online (Sandbox Code Playgroud)