#firebase #flutter #google-cloud-firestore
#firebase #flutter #google-облако-firestore
Вопрос:
Мне нужно отображать разные данные из одного и того же документа в разных виджетах. На данный момент я запускаю соединение с Firebase Firestore из каждого виджета, которому нужны данные.
Итак, я подумал, есть ли другой способ сделать это, скажем, я получаю данные при открытии приложения, а затем получаю доступ к этим данным, и мне не нужно подключаться к Firestore каждый раз, когда мне нужны его части.
Итак, мой вопрос в том, есть ли какой-нибудь способ сделать это?
Ответ №1:
Я бы рекомендовал взглянуть на пакет «provider», который является рекомендуемым способом обработки состояния в приложении flutter, даже самой командой flutter.
Вот подробное описание того, как использовать провайдера: https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple
Но вкратце, вы получаете данные один раз, и все виджеты могут получить доступ к данным от этого поставщика. Если вам нужно прослушать изменения в данных, вы также можете предоставить прослушиватель. Затем вам просто нужно обновить данные один раз, и все подкомпоненты / виджеты будут обновлены.
Ответ №2:
Вы можете использовать унаследованный виджет. Это то, что я делаю в своем приложении, используя InheritedWidget и BloC:
void main() {
//Here you get the Data from the Forestore
final myDataBloc = DataBloc();
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
home: MyInheritedWidget(
//startMyBloc is a variable of the InheritedWidget
startMyBloc: myDataBloc,
child: AppStarter()),
),
);
}
Теперь вы можете получить доступ к данным отовсюду с помощью:
MyInheritedWidget.of(context).startMyBloc,