1. import 'package:flutter/material.dart';
  2. import 'each_view.dart';
  3.  
  4. class BottomAppBarDemo extends StatefulWidget {
  5. _BottomAppBarDemoState createState() => _BottomAppBarDemoState();
  6. }
  7.  
  8. class _BottomAppBarDemoState extends State<BottomAppBarDemo> {
  9. List<Widget> _eachView; //创建视图数组
  10. int _index = 0; //数组索引,通过改变索引值改变视图
  11.  
  12. @override
  13. void initState() {
  14. // TODO: implement initState
  15. super.initState();
  16. _eachView = List();
  17. _eachView
  18. ..add(EachView('Home'))
  19. ..add(EachView('Home1'))
  20. ..add(EachView('Home2'))
  21. ..add(EachView('Home3'))
  22. ..add(EachView('Home4'));
  23. }
  24.  
  25. @override
  26. Widget build(BuildContext context) {
  27. return Scaffold(
  28. body: _eachView[_index],
  29. floatingActionButton: FloatingActionButton(
  30. onPressed: () {
  31. Navigator.of(context)
  32. .push(MaterialPageRoute(builder: (BuildContext context) {
  33. return EachView('New Page');
  34. }));
  35. },
  36. tooltip: 'Increment',
  37. child: Icon(
  38. Icons.add,
  39. color: Colors.white,
  40. ),
  41. backgroundColor: Colors.green,
  42. ),
  43. floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
  44. bottomNavigationBar: BottomAppBar(
  45. color: Colors.white,
  46. shape: CircularNotchedRectangle(),
  47. child: Row(
  48. mainAxisSize: MainAxisSize.max,
  49. mainAxisAlignment: MainAxisAlignment.spaceAround,
  50. children: <Widget>[
  51.  
  52. IconButton(
  53. icon: Icon(Icons.accessible_forward),
  54. // color: Colors.white,
  55. onPressed: () {
  56. setState(() {
  57. _index = 0;
  58. });
  59. }),
  60.  
  61. IconButton(
  62. icon: Icon(Icons.access_alarm),
  63. // color:Colors.white,
  64. onPressed: () {
  65. setState(() {
  66. _index = 1;
  67. });
  68. }),
  69. IconButton(
  70. icon: Icon(Icons.accessible_forward),
  71. color: Colors.transparent,
  72. onPressed: () {
  73. setState(() {
  74. _index = 2;
  75. });
  76. }),
  77. IconButton(
  78. icon: Icon(Icons.account_balance_wallet),
  79.  
  80. // color:Colors.white,
  81. onPressed: () {
  82. setState(() {
  83. _index = 3;
  84. });
  85. }),
  86. IconButton(
  87. icon: Icon(Icons.airport_shuttle),
  88. // color:Colors.white,
  89. onPressed: () {
  90. setState(() {
  91. _index = 4;
  92. });
  93. }),
  94. ],
  95. ),
  96. ),
  97. );
  98. }
  99. }
  1. import 'package:flutter/material.dart';
  2.  
  3. class EachView extends StatefulWidget {
  4. String _title;
  5. EachView(this._title);
  6. @override
  7. _EachViewState createState() => _EachViewState();
  8. }
  9.  
  10. class _EachViewState extends State<EachView> {
  11. @override
  12. Widget build(BuildContext context) {
  13. return Scaffold(
  14. appBar:AppBar(title:Text(widget._title)),
  15. body: Center(child:Text(widget._title)),
  16. );
  17. }
  18. }

效果:

flutter 不规则底部工具栏实现的更多相关文章

  1. 20个Flutter实例视频教程-第03节: 不规则底部工具栏制作-1

    第03节: 不规则底部工具栏制作-1 博客地址: https://jspang.com/post/flutterDemo.html#toc-973 视频地址: https://www.bilibili ...

  2. 20个Flutter实例视频教程-第04节: 不规则底部工具栏制作-2

    视频地址: https://www.bilibili.com/video/av39709290/?p=4 博客地址: https://jspang.com/post/flutterDemo.html# ...

  3. Flutter中的浮动按钮FloatingActionButton 及融合底部工具栏

    FloatingActionButton 简称 FAB,从字面理解可以看出,它是“可交互的浮动按钮”,其实在Flutter默认生成的代码中就有这家伙,只是我们没有正式的接触. 一般来说,它是一个圆形, ...

  4. Flutter实战视频-移动电商-49.详细页_Stack制作底部工具栏

    49.详细页_Stack制作底部工具栏 一直悬浮在最下面的 Stack层叠组件.里面用Row 可以横向布局 开始 stack如果想定位就要用position去定位. 修改return返回值的这个地方 ...

  5. 自定义底部工具栏及顶部工具栏和Fragment配合使用demo

    首先简单的介绍下fragment,fragment是android3.0新增的概念,其中文意思是碎片,它与activity非常相似,用来在一个activity中描述一些行为或一部分用户界面.使用锁个f ...

  6. swift-UINavigationController纯代码自定义导航控制器及底部工具栏的使用

    step1:自定义一个类  NTViewController,该类继承UITabBarController: // // NTViewController.swift // Housekeeper / ...

  7. 关于swift 底部工具栏图标锯齿模糊问题。

    今天在底部工具栏添加图片时发现图片模糊而且有锯齿,开始一直以为是美工给的图片有问题,后来发现是要设置两种图片: 比如  index.png(默认30 * 30),indexSelected(选中后的图 ...

  8. Flutter移动电商实战 --(49)详细页_Stack制作底部工具栏

    一直悬浮在最下面的 Stack层叠组件.里面用Row 可以横向布局 开始 stack如果想定位就要用position去定位. 修改return返回值的这个地方 大R刷新查看效果,可以看到固定的在左下角 ...

  9. Flutter - BottomNavigationBar底部导航栏切换后,状态丢失

    如果你用过BottomNavigationBar.TabBar.还有Drawer,你就会发现,在切换页面之后,原来的页面状态就会丢失. 要是上一页有一个数据列表,很多数据,你滚动到了下头,切换页面后, ...

随机推荐

  1. SQL EXPLAIN优化详解

    使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是 如何处理你的SQL语句的.分析你的查询语句或是表结构的性能瓶颈.使用方式:Explain+SQL语句执行计划包含的信息: ...

  2. spark HMM

    Scala实现的: https://github.com/skrusche63/spark-intent/tree/master/src/main/scala/de/kp/scala/hmm http ...

  3. python_并发编程——锁

    多进程模拟买票~ import time import json from multiprocessing import Process class Show(Process): #查 def run ...

  4. BZOJ2938 [Poi2000]病毒 和 BZOJ5261 Rhyme

    [Poi2000]病毒 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码 ...

  5. Bias vs. Variance(1)--diagnosing bias vs. variance

    我们的函数是有high bias problem(underfitting problem)还是 high variance problem(overfitting problem),区分它们很得要, ...

  6. php 递归算法

    通过递归实现阶乘 function multi($n){ if($n == 0){ return 1 ;//终止递归 } $value = $n * multi($n-1); return $valu ...

  7. Spring Boot 2.x实战之定时任务调度

    在后端开发中,有些场景是需要使用定时任务的,例如:定时同步一批数据.定时清理一些数据,在Spring Boot中提供了@Scheduled注解就提供了定时调度的功能,对于简单的.单机的调度方案是足够了 ...

  8. Dobbox

    一.向本地仓库导入Dubbox依赖 1.1解压压缩包 1.2打开cmd窗口切到源码包路径 1.3输入命令行 1.4成功后展示如图 1.5输入命令行 1.6成功后如图 public class DoSo ...

  9. Tensorflow细节-P186-队列与多线程

    先感受一下队列之美 import tensorflow as tf q = tf.FIFOQueue(2, "int32") # 创建一个先进先出队列 # 队列中最多可以保存两个元 ...

  10. 2019-2020-1 20199302《Linux内核原理与分析》第五周作业

    一.用户态.内核态和中断 1.一般现代cpu都有几种不用的指令执行级别 2.在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态. 3.在相应的低级别执行状态下, ...