setState完成后需要执行任务

时间:2019-09-13 12:05:05

标签: flutter dart

在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更新小部件之后调用此部分。 我该怎么办?

0 个答案:

没有答案