Flutter 在Flatter中使用createUserWithEmailAndPassword的新用户的默认配置文件图片

Flutter 在Flatter中使用createUserWithEmailAndPassword的新用户的默认配置文件图片,flutter,firebase-authentication,Flutter,Firebase Authentication,我正在尝试为每个选择signIn方法作为signinwithEmail的用户添加默认配置文件图片 这是我的密码: Future<FirebaseUser> signUpWithEmail(String email, String password) async { AuthResult authResult = await firebaseAuth.createUserWithEmailAndPassword( email: email, password:

我正在尝试为每个选择signIn方法作为signinwithEmail的用户添加默认配置文件图片

这是我的密码:

Future<FirebaseUser> signUpWithEmail(String email, String password) async {
    AuthResult authResult = await firebaseAuth.createUserWithEmailAndPassword(
        email: email, password: password);

    String url = 'assets/images/default_icon.png';

    if (authResult != null) {
      UserUpdateInfo updateInfo = UserUpdateInfo();
      updateInfo.displayName = email;
      updateInfo.photoUrl = url;

      FirebaseUser firebaseUser = authResult.user;

      if (firebaseUser != null) {
        await firebaseUser.updateProfile(updateInfo);

        await firebaseUser.reload();

        FirebaseUser currentuser = await firebaseAuth.currentUser();


        return currentuser;
      }
    }
    return null;
  }

Future signUpWithEmail(字符串电子邮件、字符串密码)异步{
AuthResult AuthResult=等待firebaseAuth.createUserWithEmailAndPassword(
电子邮件:电子邮件,密码:密码);
字符串url='assets/images/default_icon.png';
if(authResult!=null){
UserUpdateInfo updateInfo=UserUpdateInfo();
updateInfo.displayName=电子邮件;
updateInfo.photoUrl=url;
FirebaseUser FirebaseUser=authResult.user;
if(firebaseUser!=null){
等待firebaseUser.updateProfile(updateInfo);
等待firebaseUser.reload();
FirebaseUser currentuser=等待firebaseAuth.currentuser();
返回当前用户;
}
}
返回null;
}
我已将图像添加到我的资产文件夹中,但仍收到一个错误,原因如下: ══╡ 图像资源服务捕获到异常╞════════════════════════════════════════════════════ 解析图像编解码器时引发以下ArgumentError: 无效参数:URI中未指定主机file:///assets/images/default_image.png

引发异常时,这是堆栈: #0\u HttpClient.\u openUrl(dart:\u http/http\u impl.dart:2313:9) #1\u HttpClient.getUrl(dart:\u http/http\u impl.dart:2208:48) #2网络图像。加载异步(包:颤振/src/painting/\u网络图像\u io。dart:90:59) #3 NetworkImage.load(包:颤振/src/painting/_网络图像\u io.dart:51:14) #4 ImageProvider.resolveStreamForKey。(包装:颤振/src/painting/image_供应商。dart:505:13) #5 ImageCache.putIfAbsent(包:flatter/src/painting/image\u cache.dart:360:22) #6 ImageProvider.resolveStreamForKey(包:flift/src/painting/image\u provider.dart:503:80) #7 ScrollAwareImageProvider.resolveStreamForKey(包:flatter/src/widgets/scroll\u-aware\u-image\u-provider.dart:108:19)

图像提供程序:NetworkImage(“assets/images/default_Image.png”,比例:1.0) 图像键:NetworkImage(“assets/images/default_Image.png”,比例:1.0)
════════════════════════════════════════════════════════════════════════════════════════════════════

您保存在Firebase中的URL是本地映像资产的路径,无法传递到
NetworkImage
小部件

换句话说,本地映像不是有效的URL或托管在internet上,因此您不能在
NetworkImage
小部件中使用它

现在,要解决您的问题,您可以做两件事:

  • 检查用户是否选择了使用电子邮件登录的
    方法,并使用
    Image.asset
    而不是
    NetworkImage

  • 将图像上载到服务器/Firebase并提供上载图像的URL


  • 你不能在网络映像中使用资产映像。我尝试添加网络映像,但仍然面临相同的问题。我的问题在重新构建应用程序后得到解决,它需要网络映像。好的,太好了。