【问题标题】:Update firebase user information is not working properly更新 firebase 用户信息无法正常工作
【发布时间】:2021-07-27 08:21:02
【问题描述】:

我正在尝试更新 firebase 用户信息,但它无法正常工作,我需要热重启应用才能看到更改。这是我正在使用的方法

Future<void> saveUserNumber(
      {String number, PhoneAuthCredential phoneCredential}) async {
    try {

      await user.updatePhoneNumber(phoneCredential);
      await Get.find<FirestoreService>().saveUserPhoneNumber(user.uid, number);
      print('user before reload $user');
      await user.reload();
      
      update();
      print('user after reload $user'); //prints null phone number
    } catch (e) {
      print(e.message);
    }
  }

请注意,退出可以正常工作,但我不确定为什么这不起作用以及当我尝试更改显示名称时。

这就是我用 Getx 包监听用户变化的方法

// get firebase user, make it observable
  Rx<User> _firebaseUser = FirebaseAuth.instance.currentUser.obs;
  // getter for user
  User get user => _firebaseUser.value;

 @override
  void onInit() {
    super.onInit();
    _firebaseUser.bindStream(_auth.authStateChanges());
  }

【问题讨论】:

    标签: firebase flutter dart firebase-authentication


    【解决方案1】:

    问题解决了!

    @override
      void onInit() {
        super.onInit();
        // _firebaseUser.bindStream(_auth.authStateChanges());
        _firebaseUser.bindStream(_auth.userChanges());
      }
    

    它不起作用的原因是 authStateChanges() 监听用户的身份验证状态,而不监听凭据等其他内容。

    解决方案是使用 userChanges() 而不是 authStateChanges(),其中 userChanges() 方法具有侦听身份验证状态和凭据的功能

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 2021-09-14
      • 2023-04-07
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多