【问题标题】:How to store multiple URLs in Firestore using Flutter如何使用 Flutter 在 Firestore 中存储多个 URL
【发布时间】:2020-04-18 08:41:29
【问题描述】:

我有一个名为 Upload 的屏幕,用户可以在其中通过输入描述和多张图片来上传帖子,然后在主页上我将从 Firestore 检索数据。

问题是,在上传屏幕中,当我按下将图片及其 URL 上传到 Firebase 存储时,存储多张图片没有问题,但在 Firestore 中存储 URL 时出现问题。

我试过了:

Widget postButton(){
    return RaisedButton(
      shape:RoundedRectangleBorder( borderRadius: BorderRadius.circular(15.0),),
      color: Color.fromRGBO(0,21,43,1),
      onPressed:  () {
              uploadToFirebase();
              UploadPost();
      },
      textColor: Colors.white,
      padding: EdgeInsets.symmetric(vertical: 16.0, horizontal: 24.0),
      child: Container(
        alignment: Alignment.center,
        width: _width/1.7,
        child: Text(
          "Upload Post",
          style: TextStyle(
            fontSize: 16.0,
          ),
        ),
      ),
    );
  }

  void UploadPost() async{
   UserManagement().addPost(Name,Des,UserImageUrl,ImageUrl,PhoneNumber, context);
  }

  void uploadToFirebase() async{
    _paths.forEach((fileName, filePath) => {upload(fileName, filePath)});
  }

  void upload(fileName, filePath) async{
    DateTime date = new DateTime.now();
    var Date = DateFormat('EEE d MMM kk:mm:ss').format(date);
    StorageReference storageRef = FirebaseStorage.instance.ref().child("User Posts").child('$PhoneNumber').child('$Date').child('$date');
    final StorageUploadTask uploadTask = storageRef.putFile(File(filePath));
    var downUrl = await (await uploadTask.onComplete).ref.getDownloadURL();
    var url = downUrl.toString();
    print(url);
    setState(() {
      ImageUrl = url;
      print("Done");
      print(ImageUrl);
    });

  }

【问题讨论】:

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


    【解决方案1】:

    获取url后,可以在firestore中存储:

    var url = downUrl.toString();
        print(url);
    Firestore.instance.collection("Posts").document("doc_id")setData(
      {
       "image Urls" : url,
      },merge : true).then((_){
          print("success!");
      });
    

    这会将url 添加到文档中

    【讨论】:

    • 会添加多个url吗?
    • 只有一个 url,如果你有多个 url 让我们说 5 只需将它们添加到数组中
    • updateData({ "image Urls" : FieldValue.arrayUnion([url1,url2,url3]) }).then((_) { print("success!"); });
    • 它对我有帮助,但我想存储多个 URL 而不是一个。我仍然卡住你能给我例子或参考。我知道将 URL 存储在数组中。
    • updateData({ "image Urls" : FieldValue.arrayUnion([url1,url2,url3]) }).then((_) { print("success!"); }); 为什么这不起作用?
    猜你喜欢
    • 2021-10-14
    • 2020-03-28
    • 2020-08-09
    • 2021-04-17
    • 2020-01-04
    • 2020-03-01
    • 2021-07-23
    • 2019-06-27
    • 2020-11-27
    相关资源
    最近更新 更多