Flutter FirebaseUser如何访问用户数据

时间:2020-07-02 07:42:50

标签: firebase flutter dart

我正在使用Flutter学习Firebase。 当前正在使用匿名登录选项,这是我创建的类:

class AuthService {

  final FirebaseAuth _auth = FirebaseAuth.instance;
  
  
  // sign in anonymously

  Future signInAnonymous() async {
    try{
      // signs in as anon user
      AuthResult signInResult = await _auth.signInAnonymously();
      // retruns currently signed in user, else null
      FirebaseUser userFromResult = signInResult.user;
      return userFromResult; // HERE: if I add .uid, the id object is displayed
    }catch(e){
      print(e.toString());
      return null;
    }
  }
}

在创建实例并使用该方法后,在登录页面中,当我打印结果时,FirebaseUser(Instance of 'PlatformUser')插入了用户信息,这是代码:

onPressed: () async {
            dynamic result = await _auth.signInAnonymous();
            if(result == null){print('Error signing in.');}
            else{
              print('Signed in successfully');
              print(result);
            }

如何访问用户数据?

更新:如果我将return userFromResult;更改为return userFromResult.uid;,则返回ID字符串。 但是,我仍然想知道如何打印整个对象。

2 个答案:

答案 0 :(得分:0)

onpressed内部的结果是动态类型强制转换,但内部是FirebaseUser。

// onPressed Callback
            dynamic result = await _auth.signInAnonymous();

您可以使用正确的返回类型更改SignIn方法,并代替动态使用FirebaseUser。

Future<FirebaseUser> signInAnonymous() async {
  // [...]
  return userFromResult; // HERE: if I add .uid, the id object is displayed
}
onPressed: () async {
    FirebaseUser result = await _auth.signInAnonymous();
    print(result.uid); // should contain the id
    // [...]

答案 1 :(得分:0)

区别在于,在0.13.x版本中,用户数据可用,但在本示例中使用的版本中,所使用的安全等级为0.16.x。