# #flutter #dart #google-cloud-firestore
Вопрос:
да, я полагаю, что это звучит довольно странно, но, возможно, у кого-то из вас есть идея или, по крайней мере, подсказка, с чего я мог бы начать поиск: я создаю приложение с flutter и cloud firestore в качестве сервера. Я подключил свое приложение к коллекциям в консоли, я настроил потоки — все работало нормально, и данные поступали быстро, чтобы отображаться так, как я хотел. Теперь, уже несколько дней, я пытался создать новую функцию, которая создает новые объекты в firestore. В целях тестирования я также удалил несколько уже существующих, что приводит к тому, что объекты, которые я вижу в консоли, равны 3. Однако поток извлекает 11, в том числе те, которые я удалил вручную, и несколько, которые были успешно созданы с помощью моей функции, но даже не отображаются в консоли. И кажется, что они появляются из ниоткуда. Я дважды проверил все остальные коллекции, но этим объектам негде спрятаться. И теперь я не знаю, что делать. Я не могу продолжать так работать. Я добавлю немного кода, чтобы показать, что я обрабатываю данные. Может быть, кто-то уже сталкивался с таким странным поведением?
Widget _fetchAllGroupsAndBuildList(){
return StreamBuilder<List<Group>>(
stream: DatabaseService().groups,
builder: (context, snapshot){
if(snapshot.hasData)
{
allGroups = snapshot.data;
return _buildAllGroupsList();
}
else if(snapshot.hasError){
print(snapshot.error);
return Container(child: Text("Ups, something went wrong."));
}else{
return Container(child: Text("Ups, something went wrong."));
}
}
);
}
Stream<List<Group>> get groups {
try {
return groupCollection.snapshots()
.map(_groupListFromSnapshot);
} catch (e) {
print("Database, getGroups: " e.toString());
return null;
}
}
final CollectionReference groupCollection = FirebaseFirestore.instance.collection(
'groups');
Ответ №1:
Похоже, у вас включена автономная сохраняемость, и вы получаете кэшированную версию своих данных.
Он включен по умолчанию, и вы можете отключить его следующим образом:
FirebaseFirestore.instance.settings =
Settings(persistenceEnabled: false);
Примечание: Это должно быть установлено до выполнения любого взаимодействия с Firestore.
Ответ №2:
Итак, если кто-нибудь наткнется на это: ошибка произошла из-за версий различных компонентов firebase. Я обновил все зависимости в pubspec.yml до последней версии и заменил устаревшие функции последними. Код был скомпилирован просто отлично, но функциональность была утеряна. Я понятия не имею, почему и как, но в конце концов я снова понизил рейтинг версий, использовал более старые, и внезапно все снова заработало хорошо.
Надеюсь, это удержит кого-нибудь от поиска решения в течение нескольких дней.