Лучший способ распространять одни и те же данные FIrestore в разные виджеты Flutter

#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,