#flutter #dart #flutter-layout
#трепетать #дротик #флаттер-макет #flutter #dart #flutter-layout
Вопрос:
я хочу остановить перестроение просмотра страницы на слайде слева направо. в принципе, у меня есть 1 просмотр страницы с горизонтальной осью, внутри этого просмотра страницы у меня есть еще один просмотр страницы с вертикальной осью.
внутри 1 просмотра страницы у меня есть только 2 дочерних элемента, но во втором просмотре страницы у меня есть дочерние элементы на основе http-запроса.
Проблема: когда пользователь прокручивает 1 просмотр страницы вправо, а затем влево, то 1 просмотр страницы перестраивает второй дочерний просмотр страницы и автоматически устанавливает индекс страницы в 0.
Ожидание: просто я хочу остановить перестроение 1 просмотра страницы, когда пользователь прокручивает слева направо, затем остановите 1 просмотр страницы в этой правильной позиции и игнорируйте, чтобы установить позицию 0.
Пример просмотра страницы
return PageView(
scrollDirection: Axis.horizontal,
allowImplicitScrolling: false,
controller: _main_pageController,
children: [
PageView(
controller: _pageController,
scrollDirection: Axis.vertical,
children: [
for(int index = 0; index < complexTutorial.data.length;index )
COntainer(color:Colors.yellow),
],),
// below is second child of 1 PageView.
Container(child:Text("USER SETTING")),
],);
пожалуйста, помогите решить эту проблему, я новичок в flutter, спасибо.
Ответ №1:
Поместите контейнер в StatefulWidget, затем используйте AutomaticKeepAliveClientMixin
и переопределите метод ‘wantKeepAlive’ в StatefulWidget
class YourStateFulWidget extends StatefulWidget with AutomaticKeepAliveClientMixin{
@override
_YourStateFulWidgetState createState() => _YourStateFulWidgetState();
}
class _YourStateFulWidgetState extends State<YourStateFulWidget> {
@override
Widget build(BuildContext context) {
return Container(
child: Text("USER SETTING")
);
}
@override
bool get wantKeepAlive => keepAlive;
}
Комментарии:
1. во-первых, он не работает с этим классом => class YourStateFulWidget расширяет StatefulWidget с помощью automatickeepaliveclientmix В работе с этим классом class _YourStateFulWidgetState расширяет состояние<YourStateFulWidget> без каких-либо ошибок, но функциональность не работает с этим классом