【问题标题】:Flutter Firebase: 2 different ways of fetching user photourlFlutter Firebase:2 种不同的获取用户照片网址的方式
【发布时间】:2019-05-26 13:22:17
【问题描述】:
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;

编辑2:

    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;
    }

【问题讨论】:

  • 什么是用户和小部件变量?
  • 你从哪里得到“用户”?您是否在小部件中将用户作为参数传递?您可以在 _buildUserPic2 方法中打印“widget.url”吗?您在控制台中遇到什么错误?
  • 问题已编辑。
  • 我得到的错误是 photoUrl 为空
  • 哪个为空:widget.url 或 user.photoUrl?您如何将“用户”传递给您的小部件?

标签: firebase flutter google-authentication


【解决方案1】:

据我了解,widget.url 可以通过StatefulWidget 调用String url

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2017-03-06
    • 2018-10-23
    • 2017-07-02
    相关资源
    最近更新 更多