0

我正在尝试保存尚未更改的数据读取,以避免越来越多的相同重复数据尚未更改..

我有正常的 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);

源代码由 Alex Mamo 编写

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

任何对最新版本的 Firbase 和 dart 或颤振代码的支持或示例将非常感激..

此致

4

0 回答 0