#flutter #listener #flutter-pageview
#флаттер #слушатель #флаттер-просмотр страницы
Вопрос:
PageView.builder(
itemBuilder: (ctx, index) => pages[index],
itemCount: pages.length,
controller: _pageController,
physics: NeverScrollableScrollPhysics(),
onPageChanged: (index) {
setState(() {
_selectedIndex = index;
});
},
)
когда страница меняется, я бы хотел, чтобы элемент мог знать, что он был отображен или скрыт, поэтому я могу что-то
сделать, может быть, мне нужен слушатель? но я не знаю, как кодировать, кто-нибудь мне поможет!
Комментарии:
1. используйте
AnimatedBuilder
и передавайтеanimation: _pageController
в конструкторе2. я забыл добавить, что вы должны использовать это
AnimatedBuilder
внутриitemBuilder
3. спасибо, не могли бы вы описать более подробно?
4. @zerongjiang Можете ли вы точно описать, что вы хотите сделать с кодом?
Ответ №1:
Это не что иное, как стандартная проблема передачи состояния. В вашем виджете, создающем этот просмотр страницы (скажем, MyHomePage), вы сохраняете свое _selectedIndex
состояние как свое. С другой стороны, вы хотите передать это состояние в некоторые виджеты внутри page[index]
. Таким образом, вы хотите передать состояние дочернему элементу.
На самом деле есть много способов сделать это. Попробуйте выполнить поиск по управлению состоянием. Вы можете использовать тяжелую (но красивую) библиотеку, такую как Mobx. Вы также можете использовать легкие вещи, такие как InheritedWidget.
Комментарии:
1. @zerongjiang Добро пожаловать 🙂 Если мой ответ вам поможет, вы можете нажать «принять этот ответ» слева от этого ответа