颤动,Firebase Firestore 我无法在列表中添加元素

时间:2021-01-31 04:09:38

标签: firebase flutter google-cloud-firestore

我正在尝试在 _thumbnailList 中添加用户 ID 但它不起作用。 我不知道

List<DocumentSnapshot> _thumbnailList;
List<DocumentSnapshot> get thumbnailList => _thumbnailList;

...

  void addRecommendListLocalAndServerInSearchProduct(
      {@required String productId,
      @required String loginUserUid,
      @required List<Product> productLIst}) async {

    List<dynamic> recommendList = [];
    String uploaderId;

    _thumbnailList.forEach((element) {
      if (element.data['productId'] == productId) {
        print(
            'thumbnail recommendUidList is  ${element.data['recommendUidList']}');
        ✅ element.data['recommendUidList'].add('dasda'); //for testing 
        print('?︎thumbnail after added ${element.data['recommendUidList']}');
      }
    });

...

我这样调用方法。

// user already recommend this
          if (_isRecommend) {
            setState(() => _isRecommend = false);
            productsProvider.removeRecommendListLocalAndServerInSearchProduct(
              productId: _productId,
              productLIst: _loadedProducts,
              loginUserUid: _loginUserId,
            );
          }

// user haven't recommend this 
          else {
            setState(() => _isRecommend = true);
            productsProvider.addRecommendListLocalAndServerInSearchProduct(
              productId: _productId,
              loginUserUid: _loginUserId,
              productLIst: _loadedProducts,
            );
          }

recommendUidList 是列表

打印后,控制台中只有一个空列表 喜欢 [ ]

你们对这个错误有什么想法吗?任何。线索?

2 个答案:

答案 0 :(得分:1)

您是否尝试将单个文档直接上传到您的 Firestore?

在这种情况下,请在此处使用此源代码:

import 'dart:io';
import 'dart:typed_data';

import 'package:firebase_storage/firebase_storage.dart' as firebase_storage;
import 'package:path/path.dart';

typedef OnCompleteFirebaseUpload = Function(String cloudPath);

void uploadDocument(String filePath, OnCompleteFirebaseUpload complete,
      Function onError) async {
    firebase_storage.Reference firebaseDocument =
        firebase_storage.FirebaseStorage.instance.ref(
            'sample_directory/${basenameWithoutExtension(filePath)}_${DateTime.now().toIso8601String()}.txt');
    firebaseDocument
        .putFile(File(filePath))
        .whenComplete(
            () async => complete(await firebaseDocument.getDownloadURL()))
        .catchError((e){
          //Manage your error here
        });
  }

您上传到 Firestore 的文本文件将包含您尝试上传的用户 ID。在这种情况下,google firestore 充当远程 blob 存储容器。它必须包含一个文件,即使它使用对象存储,其中 UserID 是文件的元数据,您仍然需要收集整个文件,然后添加元数据,并将其作为一个整体对象再次上传。

答案 1 :(得分:0)

我找到了解决方案 如果有人有同样的问题,我希望它会有所帮助

enter image description here

正如你所看到的,我使用了 final 这就是为什么 ? 伙计……我浪费了我的 3 个小时