# #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));
});
}