Вызов облачного магазина Firestore перед отображением виджета

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

Вопрос:

У меня есть сетка с кучей элементов (например, блюда), и всякий раз, когда я хочу отредактировать элемент, я нажимаю кнопку, и открывается нижний лист, который выглядит следующим образом: введите описание изображения здесь

Теперь это отображается из статического списка в файле dart. Я хочу изменить следующий фрагмент кода, чтобы содержимое моего облачного магазина Firestore отображалось:

 var _isInit = true;  var _isLoading = false;   @override  void initState() {  _imageUrlFocusNode.addListener(_updateImageUrl);  super.initState();  }  @override  void didChangeDependencies() {  if (_isInit == true) {  final mealId = widget.id;  if (mealId != null) {  _editedMeal = Meals().findById('1'); //THIS IS WHERE I NEED TO RETRIEVE DATA FROM CLOUD FIRESTORE  _initValues = {  'title': _editedMeal.title,  'recipe': _editedMeal.recipe,  'description': _editedMeal.description,  'imageUrl': '',  };  _imageUrlController.text = _editedMeal.imageUrl;  }  }  _isInit = false;  super.didChangeDependencies();  }  

Мне нужно изменить ту часть, где есть комментарий, чтобы использовать Firestore в качестве источника данных. Я смог извлечь данные с помощью этого оператора, но он недостаточно быстр для визуализации, поэтому я вижу только пустые текстовые поля и никакого изображения. Это код, с помощью которого я попробовал и получил данные, но ничего не смог отобразить:

 FirebaseFirestore.instance.collection('meals').doc(mealId).get().then((DocumentSnapshot document) {  _editedMeal = Meal(  id: document.id,  //...  );  });  

Этот код использовался вместо статического, в котором комментарий был:

 _editedMeal = Meals().findById('1'); //THIS IS WHERE I NEED TO RETRIEVE DATA  

Может ли кто-нибудь, пожалуйста, предоставить решение о том, как динамически загружать данные из Firestore и заполнять эту «_editedMeal» перед отображением виджета.

Спасибо

Комментарии:

1. Куда ты звонишь get() ? В любом случае, скорее всего, вам нужно позвонить setState() , чтобы вызвать build() метод и обновить состояние _editedMeal

2. Где бы вызвать setState()? get() вызывается для получения данных из документа, полученного firebase

Ответ №1:

На самом деле я использовал обходной путь. На самом деле это не делает того, о чем я просил, но я просто передаю уже существующие параметры на нижний лист и визуализирую их, не захватывая данные снова из Firestore