Как я могу получить данные из Firestore (кэшированные данные) во флаттере

Я пытаюсь сохранить считанные данные, которые еще не были изменены, чтобы избежать все больше и больше повторяющихся данных, которые еще не изменились.

у меня есть нормальный Future.Builder, который получает данные от firstore (сетевая сторона)

          Widget build(BuildContext context) {
        return FutureBuilder(
          future: FirebaseFirestore.instance.collection('users').get(),
    builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {


    if (!snapshot.hasData) {
    return const Expanded(child: SizedBox()) ;
    }
      return ListView.builder(
      
    itemCount: snapshot.data!.docs.length ,
    itemBuilder: (context, int index) {
    DocumentSnapshot documentSnapshot = snapshot.data!.docs[index];
   
    return ListView.builder(
    itemCount: snapshot.data!.docs.length ,
    itemBuilder: (context, int index) {
    DocumentSnapshot documentSnapshot = snapshot.data!.docs[index];
    return Text(documentSnapshot['products'])
    }
    );
    
  }
}

и у меня есть в каждом документе Timestamp и мне нужно использовать where('modify',isGreaterThen : HERE i need to put the old timestamp from cashe to chick if it not changed yet to decide to fetch the new ones

во флаттере я тоже не могу справиться с этим .. Как я могу получить кэшированные данные с новыми из сети в гармоническом индексе, например, прочитать все данные обычным способом .. так что я избегал перезагрузки этих старых ..

Я много читал по этой теме, но это было в старом Firestore версия также использовала java-код ...

этот следующий код, который не может обрабатывать флаттер

       Source CACHE = Source.CACHE;
    Source SERVER = Source.SERVER;
    Query.Direction DESCENDING = Query.Direction.DESCENDING;
    FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    CollectionReference shoesRef = rootRef.collection("shoes");
    Query lastAddedQuery = shoesRef.orderBy("lastModified", DESCENDING)
    shoesRef.get(CACHE).addOnCompleteListener(task -> {
        if (task.isSuccessful()) {
            boolean isEmpty = task.getResult().isEmpty();
            if (isEmpty) {
                shoesRef.get(SERVER).addOnCompleteListener(/* ... */);
            }
        }
    });

Query query = shoesRef.orderBy("lastModified", DESCENDING)
                      .whereGreaterThan("lastModified", savedDate);

исходный код написал Алекс Мамо

https://medium.com/firebase-tips-tricks/how-to-drastically-reduce-the-number-of-reads-when-no-documents-are-changed-in-firestore-8760e2f25e9e

любая поддержка или пример с последней версией Firbase и в коде dart или flutter будут очень благодарны ..

наилучшие пожелания

0 ответов

Другие вопросы по тегам