首页 > 解决方案 > Flutter dart问题-回调方法不返回变量的最新值

问题描述

我正在调用这个 dart 方法,它在按下按钮时位于不同的类上。codeSent 值首先返回 false,然后返回 true。

class Authenticate {
    bool codeSent = false;
    bool get isCodeSent {
      return this.codeSent;
    }
    Future<bool> signInWithPhone(String phone, BuildContext context) async {
        await FirebaseAuth.instance.verifyPhoneNumber(
          phoneNumber: phone,
          codeSent: (String verificationId, int? resendToken) {
            this.codeSent = true;
            print('inside: $this.codeSent');
          },
        );
        print(this.codeSent);
        return this.codeSent;
    }
}

这就是我在按下按钮时从小部件类调用上述方法的方式。在执行以下回调后,codeSent 值始终返回 false,即使在第二次调用它时设置为 true。如何获取 codeSent 变量的最新值,以便能够执行 UI 更新?

  bool codeSent = false;
  Authenticate auth = Authenticate();
  ElevatedButton(
      onPressed: () {
          auth.signInWithPhone(phone, context).then((result) => {
          setState(() => this.codeSent = result),
    });
  },
  child: Text('Verify'),
 )

更新根据詹姆斯评论 -

Restarted application in 366ms.
flutter: false
flutter: inside: true

预期结果应该最终返回值应该等于内部打印语句的值。

标签: flutterdart

解决方案


推荐阅读