Кэш Флистера - PullRequest
       0

Кэш Флистера

1 голос
/ 06 марта 2020

Я пытаюсь уменьшить количество подключений к FireStore в своем приложении Flutter и использую кэшированные данные, пока не добавлю новый элемент (Provider.of (context, listen: false) .synced = false; - для повторной синхронизации c).

Затем передайте: source: synced == true? Source.cache: Source.serverAndCache до getDocuments ()

Теперь все данные извлекаются только в первый раз и когда мне это нужно.

Но может быть, есть более элегантный способ? Какой правильный способ сократить количество подключений и снизить затраты.

Я использую этот код в моем хранилище задач:

class TaskRepository extends BaseRepository {
  String status;
  bool synced;

  TaskRepository() {
    ref = db.collection('tasks');
  }

  Future<List<Task>> fetchDocuments() async {
    List<Task> documents;

    await ref
        .where('ownerUID', isEqualTo: await Auth.getUID())
        .where('status', isEqualTo: status ?? 'assigned')
        .orderBy('createdAt', descending: true)
        .getDocuments(source: synced == true ? Source.cache : Source.serverAndCache)
        .then((result) {
      documents = result.documents.map((doc) {
        print(doc.metadata.isFromCache ? "Task from CACHE" : "Task from NETWORK");
        synced = true;
        return Task.fromMap(doc.data, doc.documentID);
      }).toList();
    }).catchError((error) {
      print('Error: $error');
    });

    return documents;
  }
}

И BaseRepository

class BaseRepository with ChangeNotifier {
  final Firestore db = Firestore.instance;
  final FirebaseAuth auth = FirebaseAuth.instance;
  bool debug = true;
  CollectionReference ref;
  DateTime now = DateTime.now();

  BaseRepository() {
    db.settings(persistenceEnabled: true);
  }
}

1 Ответ

1 голос
/ 06 марта 2020

Я некоторое время создавал приложения Flutter, используя Firebase, и это было одной из моих главных проблем, когда я начинал.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...