当前位置:   article > 正文

Flutter实现iOS TabBarController效果和android TabHost效果_flutter tabbarcontroller

flutter tabbarcontroller

先上截图, 如何实现下图的效果呢。

对于iOS开发者,我们可以使用UITabBarController来实现,

对于android开发者,我们可以使用FragmentTabHost来实现。在Flutter中并没有这两个控件,进入正题,我们看看在Flutter中我们如何使用Flutter中的PageView来实现这种效果。

1.相关 API

通过查看Flutter中PageController的API,我们可以发现其中几个重要的api

initialPagePageController默认显示的页面下标

BottomNavigationBarType

枚举类型,

fixed 点击选中的按钮时候,文字一直显示

shifting点击选中的按钮的时候,未选中的图标,文字不显示(默认)

onTap

点击图标的响应事件

2.实现步骤

1.初始化PageView,创建相应的页面。

  1. final _defalutColor = Colors.grey; //默认选中的文字颜色
  2. final _activeColor = Colors.blue; //点击之后的文字颜色
  3. int _currentIndex = 0; //当前选中的下标
  4. final PageController _controller = PageController(
  5. initialPage: 0,//默认起始页
  6. );
  7. @override
  8. Widget build(BuildContext context) {
  9. return Scaffold(
  10. body: PageView(
  11. controller: _controller,
  12. children: <Widget>[
  13. HomePage(),
  14. SearchPage(),
  15. DiscoverPage(),
  16. MyPage(),
  17. ],
  18. ),
  19. )
  20. }

2.设置bottomNavigationBar的属性

type:(选中时候文字显示方式),onTap方法(选中相应方法),items(BottomNavigationBarItem泛型的数组,用于配置相应的图片,标题等属性)。相关代码如下:
  1. bottomNavigationBar: BottomNavigationBar(
  2. type: BottomNavigationBarType.shifting,
  3. currentIndex: _currentIndex,//当前选中的是哪一个
  4. onTap: (index){
  5. _controller.jumpToPage(index);
  6. setState(() {
  7. _currentIndex = index;
  8. });
  9. },
  10. items: [
  11. BottomNavigationBarItem(
  12. icon: Icon(
  13. Icons.home,
  14. color: _defalutColor,
  15. ),
  16. activeIcon: Icon(
  17. Icons.home,
  18. color: _activeColor,),
  19. title: Text('首页',style: TextStyle(
  20. color: _currentIndex != 0?_defalutColor:_activeColor
  21. ),)
  22. ),
  23. BottomNavigationBarItem(
  24. icon: Icon(
  25. Icons.search,
  26. color: _defalutColor,
  27. ),
  28. activeIcon: Icon(
  29. Icons.search,
  30. color: _activeColor,),
  31. title: Text('搜索',style: TextStyle(
  32. color: _currentIndex != 1?_defalutColor:_activeColor
  33. ),)
  34. ),BottomNavigationBarItem(
  35. icon: Icon(
  36. Icons.camera_alt,
  37. color: _defalutColor,
  38. ),
  39. activeIcon: Icon(
  40. Icons.camera_alt,
  41. color: _activeColor,),
  42. title: Text('发现',style: TextStyle(
  43. color: _currentIndex != 2?_defalutColor:_activeColor
  44. ),)
  45. ),BottomNavigationBarItem(
  46. icon: Icon(
  47. Icons.account_circle,
  48. color: _defalutColor,
  49. ),
  50. activeIcon: Icon(
  51. Icons.account_circle,
  52. color: _activeColor,),
  53. title: Text('我的',style: TextStyle(
  54. color: _currentIndex != 3?_defalutColor:_activeColor
  55. ),)
  56. ),
  57. ]),

目录

1.PageController相关 API

2.实现步骤

3.完整的代码地址


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/257383
推荐阅读
相关标签
  

闽ICP备14008679号