Индикатор удаления страницы Flutter PageView

Кто-нибудь знает, есть ли способ удалить индикатор PageView, который отображается в течение нескольких секунд после того, как я меняю страницу?

введите описание изображения здесь

    return Scaffold(
      bottomNavigationBar: CubertoBottomBar(
        tabStyle: CubertoTabStyle.STYLE_FADED_BACKGROUND,
        selectedTab: _selectedIndex, 
        tabs: [
          TabData(
            iconData: Icons.assignment,
            title: "Logbuch",
            tabColor: Colors.deepPurple,
          ),
         ....
        ],
        onTabChangedListener: (position, title, color) {
          setState(() {
            _selectedIndex = position;
          });
        },
      ),
      body: PageView(
        controller: _pageController,
        pageSnapping: true,
        onPageChanged: (index) {
          setState(() {
            _selectedIndex = index;
          });
        },
        // physics: NeverScrollableScrollPhysics(),
        children: <Widget>[
          LogBookView(),
         ...
        ],
      ),
    );

Я не смог найти ничего об этом в документации к виджетам PageView и BottomNav.


person F0rce    schedule 18.12.2019    source источник


Ответы (2)


Я думаю, вам нужно добавить небольшой контекст в свой код, поскольку существует множество способов реализовать PageView и индикатор. Я думаю, вы используете TabBarView в качестве родительского элемента для PageView, потому что по умолчанию у PageView нет индикатора, у TabBarView есть.

предполагая, что я прав, вам действительно не нужно использовать TabBarView, если вы не хотите использовать разные вкладки, и каждая вкладка имеет разные PageView или другие виджеты. Судя по вашему пользовательскому интерфейсу, я думаю, что PageView с контроллером может удовлетворить ваши потребности в пользовательском интерфейсе.

Class XYZ extends StatefullWidget{
.......
}
Class _XYZ extends State<XYZ>
    with SingleTickerProviderStateMixin{

PageController _pageController;
int pageNumber = 0;

void initState() {
  super.initState();

    _pageController = PageController();
  }
..................
//inside build PageView
PageView(
  controller: _pageController,
  onPageChanged: (pageIndex) {
     setState(() {
       pageNumber = pageIndex;
     });
   },
   children: <Widget>[
         Notes(), // scaffold or widget or other class
         Wochenplan(), scaffold or widget or other class
         ETC(), // scaffold or widget or other class
   ],
),
..................
//inside build bottom nav icons
Row(
   children: <Widget>[
         buildTabButton(int currentIndex, int pageNumber, String image), 
         buildTabButton2...., 
         buildTabButton3...,
   ],
)
.......

buildTabButton1........

buildTabButton2(int currentIndex, int pageNumber, String image) {
    return AnimatedContainer(
      height: _height,
      width: currentIndex == pageNumber ? 100 : 30,
      padding: EdgeInsets.all(10),
      duration: Duration(milliseconds: 300),
      decoration: BoxDecoration(),// use currentIndex == pageNumber to decorate current widget and others
      child: ../*ClickableWidget*/, //onClckWochenplan() // and so on  
    );
}

buildTabButton3........


........................
//onPressed or onTap functions which you can implement inside widgets as well.. 
void ABC() {
    _pageController.animateToPage(0,
        duration: Duration(milliseconds: 500), curve: Curves.decelerate);
}

void onClckWochenplan() {
    _pageController.animateToPage(1,
        duration: Duration(milliseconds: 500), curve: Curves.decelerate);
}

void DEF() {
    _pageController.animateToPage(2,
        duration: Duration(milliseconds: 500), curve: Curves.decelerate);
}

Надеюсь, это поможет ... еще предоставьте код, чтобы получить помощь от сообщества ... ура

person MEHEDI HASAN    schedule 18.12.2019
comment
Я отредактировал свой пост с кодом, как я это сделал. Спасибо за отличный awnser, но я думаю, что это не решение моей проблемы. - person F0rce; 19.12.2019

Я вижу, вы используете библиотеку CubertoBottomBar, которая не является TabBarView по умолчанию, которую предоставляет flutter. Итак, я заглянул в библиотеку. Дело в том, что он вообще не должен предполагать показ индикатора. Итак, я собираюсь сделать здесь 2 безумных предположения и 1 предложение .. 1. У вас могут быть другие родители с TabBarView, обертывающими этот каркас (может быть из предыдущего класса / виджета, в который этот каркас обертывается) ..

 Scaffold(
      bottomNavigationBar: CubertoBottomBar(
        tabStyle: CubertoTabStyle.STYLE_FADED_BACKGROUND,
        selectedTab: _selectedIndex, 
        tabs: [
..............

  1. если вы создаете его на IOS, он может некорректно отображать библиотечный виджет. (это потому, что я пытался создать это приложение так же, как и вы, и у меня вообще не было индикатора с тремя моими устройствами). Итак, если вы в настоящее время создаете его на IOS, попробуйте создать его на устройстве Android, тогда вы можете узнать, что на самом деле происходит, и сообщить о проблеме владельцу библиотеки.

  2. Помимо моей неспособности помочь вам, я предлагаю вам попробовать заменить PageView на TabBar, тогда вы можете управлять индикатором (хотя PageView также не должен давать вам индикатор, а просто предложение).

TabBar(
  indicatorWeight: 0.0, // then you can control height of indicator
  indicatorColor: Colors.transparent, // then you can control color with transparent value
  tabs: <Widget>[
       tab();
       tab2();
  ],            
),

//**ДЕЛАТЬ ----------------------

Ставлю на 1-е очко ... внимательно проверьте дерево виджетов ...

person MEHEDI HASAN    schedule 20.12.2019