#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. в моем примере эти виджеты перестраиваются. и я не оборачивался с константой. вы хотите изменений без навигации?