Как я могу получить данные из 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);
исходный код написал Алекс Мамо
любая поддержка или пример с последней версией Firbase и в коде dart или flutter будут очень благодарны ..
наилучшие пожелания