Восстановить содержимое купертинотаблицы при изменении элемента купертинотаблицы

#ios #flutter #dart #tabs

Вопрос:

У меня есть купертиноТабБар (завернутый в КупертиноТабСкаффолд), который содержит 3 вкладки.

 CupertinoTabScaffold(
    tabBar: CupertinoTabBar(
      currentIndex: selectedIndex,
      items: getBarItems(),
    ),
    tabBuilder: (BuildContext context, int index) {
      return BaseHomeState.widgetOptions[index];
    },
  ),
 

(BaseHomeState-это абстрактное состояние, которое я использую для обмена кодом как с платформой Android, так и с платформой iOS)

Расширенные возможности :

 static final List<Widget> widgetOptions = <Widget>[
   const FormPage(),
   const DraftsPage(),
   const SettingsPage(),
];
 

Эти «Страницы» являются безгосударственными виджетами, которые содержат блокпровайдеры с платформой, выделенной в качестве дочерней.

Мне нужно содержимое моей вкладки (widgetOptions), чтобы перезапускать метод сборки каждый раз, когда я переключаю вкладку, что сейчас не так. Проблема в том, что иногда содержимое страницы черновиков необходимо обновлять из-за изменений на странице форм (пользователь может сохранять черновики форм и просматривать их на странице черновиков). Но эти две страницы нигде не связаны :

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

У тебя есть идея? 🙂

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

1. «Содержимое DraftsPage должно обновляться в связи с изменениями на странице формы» — не похоже, что это должен быть виджет с отслеживанием состояния по определению?

2. Хм сказал вот так, да. Но это немного сложнее. Когда вы пишете в форме, вы можете сохранить ее как черновик. Затем он сохраняется в базе данных. Все, чего я хочу, это чтобы, как только я перейду на вкладку DraftsPage, был запущен метод сборки и выполнена выборка базы данных. Ничего сложного, никакого прослушивателя событий и т. Д.. (Я отредактирую свое первое сообщение)

3. Я считаю, что в Flutter лучший способ сделать что-то подобное-преобразовать его в виджет с отслеживанием состояния, управлять состоянием в соответствующем месте в дереве виджетов и использовать схему уведомителя / поставщика / потребителя.

4. Спасибо. Но это не работает в моем контексте.

5. в моем примере эти виджеты перестраиваются. и я не оборачивался с константой. вы хотите изменений без навигации?