Flutter Firebase:2种不同的获取用户photourl的方式

时间:2018-12-28 19:09:24

标签: firebase flutter google-authentication

content: Column(
    children: <Widget>[
      _buildUserPic1(),
      _buildUserPic2()
    ],
  ),

以下是我尝试获取使用Google Firebase身份验证登录的用户的照片的两种方法。

Container _buildUserPic(){
    return Container(
      child: Image.network(
        user.photoUrl
      ),
    );
  }

第二种方法是

Container _buildUserPic2(){
return Container(
  child: Container(
    decoration: BoxDecoration(
    shape: BoxShape.circle,
    image: DecorationImage(
      image: NetworkImage(widget.url), 
    )
  ),
  )
);}

第一个成功生成个人资料图片,但另一个给出错误。什么是获取图像的正确方法?我应该使用异步方法来获取图像吗?

编辑: userFirebaseUser的实例。

widget.url用于访问String url(在有状态的小部件中)

final String url = user.photoUrl;

Edit2:

    final FirebaseAuth firebaseauth = FirebaseAuth.instance;
  final GoogleSignIn gsa = new GoogleSignIn();

  Future<FirebaseUser> _signIn() async {
    GoogleSignInAccount googleSignInAccount = await gsa.signIn();
    GoogleSignInAuthentication googleSignInAuthentication = await googleSignInAccount.authentication;

    FirebaseUser firebaseUser = await firebaseauth.signInWithGoogle(
      idToken: googleSignInAuthentication.idToken,
      accessToken: googleSignInAuthentication.accessToken,
    );

    user = firebaseUser;
    googleSignIn = gsa;
    }

1 个答案:

答案 0 :(得分:0)

据我所知,widget.url 可以从 String url 调用 StatefulWidget

如果在构建屏幕后调用 _signIn()user 将在 null 上为 String url。鉴于 final 也在 String url 上设置,因此无法更改其值。

我建议您在这里可以做的是使用 provider 包维护用户数据存储库,并根据当前登录的用户更新其数据。您可以阅读此guide了解更多详情。