Как перемещаться по разным страницам по изогнутой панели навигации в флаттере? - PullRequest
0 голосов
/ 21 октября 2019

Я не могу использовать изогнутую панель навигации во флаттере, когда я сдвигаю экран, чтобы кнопки изогнутой панели навигации тоже двигались, но когда я нажимаю на кнопки изогнутой панели навигации, ничего не происходит. я думаю onTap () не работает должным образом. как перемещаться по страницам, когда я нажимаю кнопки? вот код моей программы =>

  static final String id = 'profile_page';
  @override
  _PagesState createState() => _PagesState();
}

class _PagesState extends State<Pages> {
  PageController _pageController;

  int _Page=0;

  @override
  void initState() {
    super.initState();
    _pageController = PageController();
  }

  @override

  Widget build(BuildContext context) {
    return Scaffold(

        body: PageView(

            controller: _pageController,
          children: <Widget>[

            Search(),
            Trending(),
            Friends(),
            Profile(),
          ],
          onPageChanged: (int index) {
            setState(() {

              _pageController.jumpToPage(index);
            });
          }
          ),


          bottomNavigationBar: CurvedNavigationBar(
            animationCurve: Curves.easeInOutBack,

            index:3,

            items: <Widget>[
              Icon(Icons.search, size: 30, color: Colors.white, ),
              Icon(Icons.trending_up, size: 30, color: Colors.white),
              Icon(Icons.group, size: 30, color: Colors.white),
              Icon(Icons.person, size: 30, color: Colors.white)
            ],
            color: Colors.blueAccent,
            backgroundColor: Colors.white,
            height: 60.0,
            onTap: (int index) {
             setState(() {
               _pageController.jumpToPage(index);
             });
            },

          ),
        );

  }
}

1 Ответ

0 голосов
/ 21 октября 2019

Если вы измените страницу PageView, вы говорите CurvedNavigationBar изменить ее страницу. Но когда вы изменяете страницу CurvedNavigationBar, вы не говорите PageView изменить ее страницу.

Вам необходимо добавить PageController к PageView, например:

final _pageController = PageController();

PageView(
  controller: _pageController,
  ...

Тогда вы сможете сделать это:

_pageController.jumpToPage(index);

Но убедитесь, что когда вы говорите одному сменить страницу другого, другой не повторяет первый разизменить свою страницу, потому что это будет бесконечный цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...