Firestore заказал коллекцию в флаттере

# #firebase #flutter #dart #google-cloud-firestore #bloc

Вопрос:

Мне нужно хранить документы (задачи) в Firestore. В задании есть порядок. Порядок может быть изменен. Когда я изменяю порядок выполнения одной задачи, я должен изменить порядок выполнения следующих задач. Поскольку я все сделал через blocbuilder и поток задач, это приводит к тому, что блок перестраивается много раз, пока не будет установлен порядок выполнения каждой задачи. Как я могу обновить блок только тогда, когда все задачи имеют новый порядок?

 Stream<ProjectState> _mapSelectProjectToState(SelectProject event) async* {
Project selectedProject = event.project;

_statesSubscription?.cancel();
_statesSubscription = databaseService.projectStates(event.project).listen((states) => selectedProject.states = states);

_tagsSubscription?.cancel();
_tagsSubscription = databaseService.tags(event.project).listen((tags) => selectedProject.tags = tags);

_tasksSubscription?.cancel();
_tasksSubscription = databaseService.tasks(event.project).listen((tasks) {

  LinkedHashMap<String, List<Task>> tasksHashMap = new LinkedHashMap();
  List<TaskState> states = event.project.states!;

  selectedProject.states!.sort((a,b)
  {
    return a.order!.compareTo(b.order!);
  });

  for(TaskState ts in states)
  {
    List<Task> snapshotList = tasks.where((element) => element.state == ts.id).toList();
    snapshotList.sort((a,b){
      return a.order!.compareTo(b.order!);
    });
    tasksHashMap[ts.id.toString()] = snapshotList;
  }
  selectedProject.tasks = tasksHashMap;
  add(ProjectUpdated(selectedProject));
});
}