美文网首页
flutter 多Tabbar下,中间按钮无文字,带动画;Tab

flutter 多Tabbar下,中间按钮无文字,带动画;Tab

作者: iOS_我更专业 | 来源:发表于2020-03-24 18:43 被阅读0次

首先,主入口main.dart文件下:

void main()=>runApp( new MyApp() );

class MyAppextends StatelessWidget{

@override

  Widgetbuild(BuildContext context) {

       return new Index();

  }

}

Index文件夹下:

class Indexextends StatefulWidget {

@override

  StatecreateState() =>new _IndexState();

}

// with

/*

* 混合 mixins (with)

* 混合的对象是类;可以混合多个

* */

class _IndexStateextends Statewith SingleTickerProviderStateMixin {

PageControllerpageController;

  intpage =0;

  //添加图片地址,需要动态更换图片

  StringbigImg ='iamges/centerAdd.png';

  //创建4个Tabbar

  @override

  void initState() {

super.initState();

    pageController =PageController(initialPage:this.page);

  }

@override

  Widgetbuild(BuildContext context) {

return MaterialApp(

debugShowCheckedModeBanner:false,

      theme:new ThemeData(

//去除点击的动画效果

        brightness: Brightness.light,

        splashColor: Colors.transparent,

        highlightColor: Colors.transparent,

      ),

      home:Scaffold(

body:Stack(

children: [

Scaffold(

body:PageView(

physics:NeverScrollableScrollPhysics(),

                children: [

new homePage(),

                  new yuyuePage(),

                  new centerPage(),

                  new quanziPage(),

                  new mePage()

],

                controller:pageController,

                onPageChanged: onPageChanged,

              ),

              bottomNavigationBar:BottomNavigationBar(

type: BottomNavigationBarType.fixed,

                selectedItemColor: Common.appThemeColor,

                unselectedItemColor: Common.appTabbarNorColor,

                selectedFontSize:14,

                unselectedFontSize:14,

                items: [

BottomNavigationBarItem(

icon:Image.asset(

"iamges/faXianNor.png",

                        scale:2.2,

                      ),

                      activeIcon:Image.asset(

"iamges/faXianSel.png",

                        scale:2.2,

                      ),

                      title:Text(

'首页',

                        style:TextStyle(fontFamily:'Rock Salt'),

                      )),

                  BottomNavigationBarItem(

icon:Image.asset(

"iamges/cityNor.png",

                        scale:2.2,

                      ),

                      activeIcon:Image.asset(

"iamges/citySel.png",

                        scale:2.2,

                      ),

                      title:Text('预约')),

                  BottomNavigationBarItem(

icon:new Container(), title:new Container()),

                  BottomNavigationBarItem(

icon:Image.asset(

"iamges/studyNor.png",

                        scale:2.2,

                      ),

                      activeIcon:Image.asset(

"iamges/studySel.png",

                        scale:2.2,

                      ),

                      title:Text('学习')),

                  BottomNavigationBarItem(

icon:Image.asset(

"iamges/meNor.png",

                        scale:2.2,

                      ),

                      activeIcon:Image.asset(

"iamges/meSel.png",

                        scale:2.2,

                      ),

                      title:Text('我的')),

                ],

                onTap: onTap,

                currentIndex:page,

              ),

            ),

            Align(

alignment: Alignment.bottomCenter,

              child:new Container(

child:FlatButton(

onPressed: () {

onBigImgTap();

                    },

                    child:new Container(

child:new Image.asset(

bigImg,

                        width:40.0,

                        height:40.0,

                      ),

                      padding:const EdgeInsets.only(bottom:38),

                    )),

              ),

            )

],

        ),

      ),

    );

  }

//组件移除,例如页面销毁的时候会依次执行:deactivate > dispose

  @override

  void dispose() {

pageController.dispose();

    super.dispose();

  }

//修改bottomNavigationBar的点击事件

  void onTap(int index) {

if (index !=2) {

setState(() {

this.bigImg ='iamges/centerAdd.png';

      });

    }

pageController.jumpToPage(index);

  }

//添加图片的点击事件

  void onBigImgTap() {

setState(() {

this.page =2;

      this.bigImg ='iamges/centerAddXuanZhuanNew.png';

      onTap(this.page);

    });

  }

void onPageChanged(int page) {

setState(() {

this.page = page;

    });

  }

}

源码地址

相关文章

网友评论

      本文标题:flutter 多Tabbar下,中间按钮无文字,带动画;Tab

      本文链接:https://www.haomeiwen.com/subject/fqjayhtx.html