【问题标题】:it's always return null setState()它总是返回 null setState()
【发布时间】:2020-06-17 17:37:09
【问题描述】:

我在 Firebase 存储中上传图像并下载 URL 以便稍后检索图像。 我添加了屏幕截图和更多代码。 在 print(url) 工作正常并且将值 URL 传递给 storenewuser 函数时,它存储 null

This is the upload function:
Future uploadPic() async{
    String filename = phoneNumber;
    StorageReference ref = FirebaseStorage.instance.ref().child("User Profile Image").child(filename);
    StorageUploadTask uploadTask = ref.putFile(_Image);
    var downUrl = await (await uploadTask.onComplete).ref.getDownloadURL();
    var url = downUrl.toString();
    print(url);
    if (!mounted) return;
    setState(() {
      ImageUrl=url;
    });
  }
SignUp and storing usersdata:
void Signup() async{
    if(_key.currentState.validate()){
      FirebaseAuth.instance.createUserWithEmailAndPassword(email: Email, password: Password).then((signedInUser){
        uploadPic();
        UserManagement().storeNewUser(Name,Email,phoneNumber,ImageUrl,RollNumber,Course,Semester,signedInUser.user, context);
      }).catchError((e){
        final snackBar = SnackBar(
          content: Text(e.message),
        );
        Scaffold.of(context).showSnackBar(snackBar);
        print(e);
      });
    }
    else{
      print("NULL");
    }
  }

storeNewUser(Name,Email/*,password*/,phonenumber,ImageUrl,rollnumber,course,sem,user,context){
    Firestore.instance.collection('/users').document(user.uid).setData({
      'Name' : Name,
      'Email' : Email,
      'Image Url' : ImageUrl,
      'Phone Number' : phonenumber,
      'Roll Number' : rollnumber,
      'College' : 'Siliguri Institute of Technology',
      'Course' : course,
      'Semester' : sem
    }).then((value){
        Navigator.of(context).pop();
        Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => SignUpCompletePage()));
    }).catchError((e){
      final snackBar = SnackBar(
        content: Text(e.message),
      );
      Scaffold.of(context).showSnackBar(snackBar);
    });
  }

数据库:

存储:

【问题讨论】:

  • 添加你的 Firebase 存储
  • @PeterHaddad 我添加了截图。我认为问题出在if 语句中,因为print(url) 工作正常
  • 那是你的 firestore 数据库,添加你的 firesbase 存储的屏幕截图
  • 你的 setState 语法错误
  • @PrithweeDas ,这就是我在这里的原因。

标签: firebase flutter google-cloud-firestore google-cloud-storage firebase-storage


【解决方案1】:

改变一下

uploadPic();

await uploadPic();

:)

【讨论】:

    猜你喜欢
    • 2014-03-04
    • 2016-11-02
    • 2014-05-06
    • 2012-06-05
    • 2014-05-30
    • 2014-02-23
    • 2017-10-12
    • 2013-08-16
    • 2016-03-28
    相关资源
    最近更新 更多