在setState()方法完成其全部工作之后,我需要执行一个任务。我将在下面用一些代码描述我的问题。
我有一个登录屏幕,它具有以下小部件:
...
child: TextField(
errorText: getErrorStringOfEmail(),
...
),
...
child: MaterialButton(
onPressed: () => onClickLoginButton(),
...
),
“ getErrorStringOfEmail”方法如下:(当通过调用“ setState()”更新文本字段时,将调用此方法。)
String getErrorStringOfEmail(
if(loginEmailTextEditingController.text.toString() == "a") {
isValidLogin = false;
return 'Wrong password or email';
}
isValidLogin = true;
return null;
}
“ onClickLoginButton”如下:
void onClickLoginButton() {
setState(() {
//in here a boolean is changed to update Textfield.
});
if (isValidLogin) {
Navigator.pushReplacement (
context,
MaterialPageRoute(builder: (context) => HomeWidget()),
);
}
}
如您所见,当更新Textfield小部件时,将分配“ isValidLogin”布尔值。但是,在onClickLoginButton之后调用getErrorStringOfEmail方法。我需要执行以下部分,
if (isValidLogin) {
Navigator.pushReplacement (
context,
MaterialPageRoute(builder: (context) => HomeWidget()),
);
}
调用getErrorStringOfEmail方法后。为此,我需要在setState更新小部件之后调用此部分。 我该怎么办?