#firebase #flutter
# #firebase #трепещет
Вопрос:
У меня есть функция, которая получает значение из firebase перед переходом на другую страницу. К сожалению, я получаю эту ошибку «Необработанное исключение: плохое состояние: не удается получить поле в DocumentSnapshotPlatform, которого не существует» при вызове функции. Однако, если я перезагружаю свое приложение, функция вызывается, и значение есть. У вас, ребята, есть идеи, как я могу это исправить?
вот функция:
Future<void> getDeliveryPrice(String profileId) async {
final DocumentSnapshot doc = await storeRef.doc(profileId).get();
final price = doc['delPrice'] as num;
deliveryPrice = price;
print(profileId);
notifyListeners();
}
И здесь я вызываю функцию:
PriceCard(
buttonText: 'Continuar para a Entrega',
onPressed: cartManager.isCartValid
? () {
cartManager.getDeliveryPrice(profileId);
print(profileId);
Navigator.push(
context, MaterialPageRoute(
builder: (context) => AddressScreen(profileId),
));
} : null,
)
Комментарии:
1.
doc.data()['delPrice'] as num;
, я не знаю, есть ли здесь разница. но я думаю, вы должны получить его .data() .. И какова версия pakacge вашего cloud_firestore?2. doc имеет тип
DocumentSnapshot
, у него есть методdata()
, который возвращает карту с полями и значениями документа3. Я уже пробовал это, но это не работает. Функция работает без
data()
но только в том случае, если я перезагружаю приложение, но когда я вызываю его, это не так.
Ответ №1:
Проверьте эту проблему на GitHub. В нем говорится, что ошибка связана с недавними изменениями DocumentSnapshot
. Раньше были данные doc
, но теперь doc.data()
они есть.
Комментарии:
1. спасибо за ваш ответ, Микаэль, я уже пробовал это, но это не работает. Функция работает без
data()
, но только если я перезагружаю приложение, но когда я его вызываю, это не так.2. Вероятно, это потому, что вы не прослушиваете обновления. Используйте либо
Consumer
/Selector
widget, либоcontext.watch<T>()
функцию.
Ответ №2:
Я нашел проблему, profileId
которая отсутствовала.