处理Flutter中的错误后,如何设置文本字段的State()?

时间:2019-03-04 14:42:44

标签: dart flutter

我有一个名为LoginWithFb()的函数。该函数有一个try catch块:

void loginWithFb() async {
    try {
      var auth = AuthProvider.of(context).auth;
      print('Signing up with fb...');
      setState(() {
        _showProgressIndicator = true;
      });

      FirebaseUser user = await auth.signInWithFBAcc();
      uId = user?.uid;

      if (uId != null) {
        print('Signed in: $uId');
        widget.onSignedIn(user);
      } else {
        print('fb login cancelled');
      }

//    _showAlert(context);
      setState(() {
        _showProgressIndicator = false;
      });
    } catch (exception) {
      print(exception.toString());

      setState(() {
        _showProgressIndicator = false;


      });
    }

当发现错误时,我想向用户显示消息。该消息必须在文本字段中,而不是通过对话框。目前,我的构建方法中有一个空的Text('')小部件。捕获错误后,我想向文本小部件中写入文本。

1 个答案:

答案 0 :(得分:1)

只需使用本地变量存储消息并通过“文本”小部件显示

   String message = "";   
   void loginWithFb() async {
    try {
      ...
    } catch (exception) {

      print(exception.toString());

      setState(() {
         message = "Some error happens";
        _showProgressIndicator = false;
      });
    }

在小部件中:

Text(message);