Обновить зависимый ChangeNotifierProvider из ответа другого независимого StreamProvider в Flutter

#flutter #flutter-provider #flutter-change-notifier

#flutter #flutter-provider #flutter-change-notifier

Вопрос:

Изначально я разрабатывал свое приложение с помощью простых поставщиков уведомлений об изменениях. Позже я решил использовать Firestore и StreamProvider. Теперь у меня есть поток, который возвращает список. Я хочу заполнить свой список в уведомителе об изменениях после получения данных от поставщика потока. Уведомитель об изменениях имеет разные функции, которые мои виджеты используют для получения разных подмножеств центрального списка. Вот почему я не хочу, чтобы виджеты напрямую использовали поток. Я хочу, чтобы они использовали поставщика уведомлений об изменениях, который будет обновляться StreamProvider.

 return MultiProvider(
            providers: [
              ChangeNotifierProvider<TodoProvider>(
                  create: (_) => TodoProvider()),
              StreamProvider<List<Todo>>.value(
                  value: new DatabaseServices(
                          FirebaseAuth.instance.currentUser.uid)
                      .getUserTodoList()),
            ],
            child: MaterialApp(
              title: 'Awesome Todo',
              theme: ThemeData(
                primarySwatch: Colors.blue,
                visualDensity: VisualDensity.adaptivePlatformDensity,
              ),
              home: AppNavigationBar(),
            ),
            // child:
            // AppNavigationBar()
          )
  

Теперь, как вы можете видеть, в массиве с несколькими поставщиками у меня есть мой поставщик уведомлений об изменениях и поставщик потоков. Я хочу обновить список в классе TodoProvider, когда получу обновленный список из DatabaseService.getUserTodoList() . Полезен ли прокси-провайдер в этом случае? Спасибо, что прочитали сообщение. Любая помощь будет принята с благодарностью.

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

1. Да, прокси-провайдер был бы полезен в этом сценарии. Это руководство помогло мне понять архитектуру провайдера, ознакомьтесь с ней.