颤振如何在BottomNavigationBar中禁用幻灯片动画

问题描述

我正在尝试在Flutter中创建BottomNavigationBar,但是我想禁用页面间的幻灯片动画。如果我从第一个标签转到第三个标签,我希望它直接打开第三个标签,而不是先滑过secondtab再滑到Thirdtab。

这是我的代码

class MyApp3 extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyAppState3();
  }
}

class _MyAppState3 extends State<MyApp3> {
  @override
  PageController _pageController;

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

  @override
  Widget build(BuildContext context) {
    var pages = [FirstTab(),SecondTab(),ThirdTab()];

    var pageView = PageView(
      controller: _pageController,physics: NeverScrollableScrollPhysics(),children: pages,);

    var bottomNav = BottomNavigationBar(
      onTap: (tabIndex) {
        _pageController.jumpToPage(tabIndex);
      },items: [
        BottomNavigationBarItem(icon: Icon(Icons.home),label: "Start"),BottomNavigationBarItem(
            icon: Icon(Icons.camera_enhance),label: "Second"),BottomNavigationBarItem(icon: Icon(Icons.offline_pin),label: "Home"),],);

    return MaterialApp(
        home: Scaffold(
      body: pageView,bottomNavigationBar: bottomNav,));
  }
}

使用此代码,一切都可以按我的要求进行,但是页面更改时BottomNavigationBarItem不会更改。总是这样:

如何更改BottomNavigationBarItem选择?

解决方法

尝试一下。

class MyApp3 extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyAppState3();
  }
}

class _MyAppState3 extends State<MyApp3> {
  @override
  PageController _pageController;

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

  int _currentIndex = 0;
  @override
  Widget build(BuildContext context) {
    var pages = [FirstTab(),SecondTab(),ThirdTab()];

    var pageView = PageView(
      controller: _pageController,physics: NeverScrollableScrollPhysics(),children: pages,);

    var bottomNav = BottomNavigationBar(
      onTap: (tabIndex) {
         setState((){_currentIndex = tabIndex;});
        _pageController.jumpToPage(tabIndex);
      },currentIndex: _currentIndex,items: [
        BottomNavigationBarItem(icon: Icon(Icons.home),label: "Start"),BottomNavigationBarItem(
            icon: Icon(Icons.camera_enhance),label: "Second"),BottomNavigationBarItem(icon: Icon(Icons.offline_pin),label: "Home"),],);

    return MaterialApp(
        home: Scaffold(
      body: pageView,bottomNavigationBar: bottomNav,));
  }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...