Как избежать загрузки средней страницы при переключении с помощью PageController.animateToPage в нижней панели?

#flutter #flutter-animation

#flutter #flutter-анимация

Вопрос:

У меня возникают некоторые проблемы с использованием PageController.animateToPage при навигации по нижней панели, которую я загрузил сhttps://pub.dev/packages/bottom_navy_bar. Когда я хочу переключаться между первой и третьей страницами в моей нижней панели, это на какой-то момент загружает страницы моддла, но в других ситуациях это работает отлично. Я использую просмотр страниц, чтобы показывать страницы с помощью pagecontroller, включая анимацию.

Мой просмотр страницы:

      body: SizedBox.expand(
      child: PageView(
        controller: _pageController,
        onPageChanged: (i) {
          setState(() {
            selectedPos = i;
            if (selectedPos == 0) {
              setState(() {
                _isActiveHome = true;
                _isActiveMiddle = false;
                _isActiveProfile = false;
              });
            } else if (selectedPos == 1) {
              setState(() {
                _isActiveMiddle = true;
                _isActiveHome = false;
                _isActiveProfile = false;
              });
            } else if (selectedPos == 2) {
              setState(() {
                _isActiveProfile = true;
                _isActiveHome = false;
                _isActiveMiddle = false;
              });
            }
          });
        },
        children: [
          AnimatedOpacity(
              opacity: _isActiveHome ? 1.0 : 0.0,
              duration: Duration(milliseconds: 500),
              child: HomePage()),
          AnimatedOpacity(
              opacity: _isActiveMiddle ? 1.0 : 0.0,
              duration: Duration(milliseconds: 500),
              child: FavoritesPage()),
          AnimatedOpacity(
              opacity: _isActiveProfile ? 1.0 : 0.0,
              duration: Duration(milliseconds: 500),
              child: ProfilePage())
        ],
      ),
    ),
  

Там я включаю свои 3 страницы, которые будут использоваться в нижней панели, и придаю им эффект затухания.

Моя нижняя панель навигации:

 bottomNavigationBar: ClipRRect(
          clipBehavior: Clip.hardEdge,
          borderRadius: BorderRadius.only(
              topLeft: Radius.circular(25), topRight: Radius.circular(25)),
          child: BottomNavyBar(
            selectedIndex: selectedPos,
            showElevation: true,
            itemCornerRadius: 15,
            curve: Curves.easeInBack,
            onItemSelected: (i) {
              setState(() => selectedPos = i);
              _pageController.animateToPage(i,
                  duration: Duration(milliseconds: 1500),
                  curve: Curves.fastLinearToSlowEaseIn);
            },
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            items: [
              BottomNavyBarItem(
                  inactiveColor: Colors.grey[700],
                  activeColor: Colors.blue,
                  textAlign: TextAlign.center,
                  icon: ImageIcon(
                    AssetImage('assets/images/home-run.png'),
                    size: 28,
                  ),
                  title: Text(
                    "Главная",
                    style: TextStyle(fontSize: 18),
                  )),
              BottomNavyBarItem(
                  inactiveColor: Colors.grey[700],
                  activeColor: Colors.purple,
                  textAlign: TextAlign.center,
                  icon: ImageIcon(
                    AssetImage('assets/images/main.png'),
                    size: 23,
                  ),
                  title: Text(
                    "Избранное",
                    style: TextStyle(fontSize: 15),
                  )),
              BottomNavyBarItem(
                  inactiveColor: Colors.grey[700],
                  activeColor: Colors.red,
                  textAlign: TextAlign.center,
                  icon: ImageIcon(
                    AssetImage('assets/images/user.png'),
                    size: 27,
                  ),
                  title: Text(
                    "Профиль",
                    style: TextStyle(fontSize: 18),
                  ))
            ],
          ),
  

Там у меня есть моя нижняя панель, где я размещаю _pageController и анимацию.

Итак, мой вопрос в том, как я могу избежать загрузки средней страницы в animateToPage? Потому что каждый том, когда я хочу переключаться между 1-й и 3-й страницами, загружается на короткое время. Может кто-нибудь помочь с этим?