flutter 不规则底部工具栏实现
- import 'package:flutter/material.dart';
- import 'each_view.dart';
- class BottomAppBarDemo extends StatefulWidget {
- _BottomAppBarDemoState createState() => _BottomAppBarDemoState();
- }
- class _BottomAppBarDemoState extends State<BottomAppBarDemo> {
- List<Widget> _eachView; //创建视图数组
- int _index = 0; //数组索引,通过改变索引值改变视图
- @override
- void initState() {
- // TODO: implement initState
- super.initState();
- _eachView = List();
- _eachView
- ..add(EachView('Home'))
- ..add(EachView('Home1'))
- ..add(EachView('Home2'))
- ..add(EachView('Home3'))
- ..add(EachView('Home4'));
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- body: _eachView[_index],
- floatingActionButton: FloatingActionButton(
- onPressed: () {
- Navigator.of(context)
- .push(MaterialPageRoute(builder: (BuildContext context) {
- return EachView('New Page');
- }));
- },
- tooltip: 'Increment',
- child: Icon(
- Icons.add,
- color: Colors.white,
- ),
- backgroundColor: Colors.green,
- ),
- floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
- bottomNavigationBar: BottomAppBar(
- color: Colors.white,
- shape: CircularNotchedRectangle(),
- child: Row(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- children: <Widget>[
- IconButton(
- icon: Icon(Icons.accessible_forward),
- // color: Colors.white,
- onPressed: () {
- setState(() {
- _index = 0;
- });
- }),
- IconButton(
- icon: Icon(Icons.access_alarm),
- // color:Colors.white,
- onPressed: () {
- setState(() {
- _index = 1;
- });
- }),
- IconButton(
- icon: Icon(Icons.accessible_forward),
- color: Colors.transparent,
- onPressed: () {
- setState(() {
- _index = 2;
- });
- }),
- IconButton(
- icon: Icon(Icons.account_balance_wallet),
- // color:Colors.white,
- onPressed: () {
- setState(() {
- _index = 3;
- });
- }),
- IconButton(
- icon: Icon(Icons.airport_shuttle),
- // color:Colors.white,
- onPressed: () {
- setState(() {
- _index = 4;
- });
- }),
- ],
- ),
- ),
- );
- }
- }
- import 'package:flutter/material.dart';
- class EachView extends StatefulWidget {
- String _title;
- EachView(this._title);
- @override
- _EachViewState createState() => _EachViewState();
- }
- class _EachViewState extends State<EachView> {
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar:AppBar(title:Text(widget._title)),
- body: Center(child:Text(widget._title)),
- );
- }
- }
效果:
flutter 不规则底部工具栏实现的更多相关文章
- 20个Flutter实例视频教程-第03节: 不规则底部工具栏制作-1
第03节: 不规则底部工具栏制作-1 博客地址: https://jspang.com/post/flutterDemo.html#toc-973 视频地址: https://www.bilibili ...
- 20个Flutter实例视频教程-第04节: 不规则底部工具栏制作-2
视频地址: https://www.bilibili.com/video/av39709290/?p=4 博客地址: https://jspang.com/post/flutterDemo.html# ...
- Flutter中的浮动按钮FloatingActionButton 及融合底部工具栏
FloatingActionButton 简称 FAB,从字面理解可以看出,它是“可交互的浮动按钮”,其实在Flutter默认生成的代码中就有这家伙,只是我们没有正式的接触. 一般来说,它是一个圆形, ...
- Flutter实战视频-移动电商-49.详细页_Stack制作底部工具栏
49.详细页_Stack制作底部工具栏 一直悬浮在最下面的 Stack层叠组件.里面用Row 可以横向布局 开始 stack如果想定位就要用position去定位. 修改return返回值的这个地方 ...
- 自定义底部工具栏及顶部工具栏和Fragment配合使用demo
首先简单的介绍下fragment,fragment是android3.0新增的概念,其中文意思是碎片,它与activity非常相似,用来在一个activity中描述一些行为或一部分用户界面.使用锁个f ...
- swift-UINavigationController纯代码自定义导航控制器及底部工具栏的使用
step1:自定义一个类 NTViewController,该类继承UITabBarController: // // NTViewController.swift // Housekeeper / ...
- 关于swift 底部工具栏图标锯齿模糊问题。
今天在底部工具栏添加图片时发现图片模糊而且有锯齿,开始一直以为是美工给的图片有问题,后来发现是要设置两种图片: 比如 index.png(默认30 * 30),indexSelected(选中后的图 ...
- Flutter移动电商实战 --(49)详细页_Stack制作底部工具栏
一直悬浮在最下面的 Stack层叠组件.里面用Row 可以横向布局 开始 stack如果想定位就要用position去定位. 修改return返回值的这个地方 大R刷新查看效果,可以看到固定的在左下角 ...
- Flutter - BottomNavigationBar底部导航栏切换后,状态丢失
如果你用过BottomNavigationBar.TabBar.还有Drawer,你就会发现,在切换页面之后,原来的页面状态就会丢失. 要是上一页有一个数据列表,很多数据,你滚动到了下头,切换页面后, ...
随机推荐
- SQL EXPLAIN优化详解
使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是 如何处理你的SQL语句的.分析你的查询语句或是表结构的性能瓶颈.使用方式:Explain+SQL语句执行计划包含的信息: ...
- spark HMM
Scala实现的: https://github.com/skrusche63/spark-intent/tree/master/src/main/scala/de/kp/scala/hmm http ...
- python_并发编程——锁
多进程模拟买票~ import time import json from multiprocessing import Process class Show(Process): #查 def run ...
- BZOJ2938 [Poi2000]病毒 和 BZOJ5261 Rhyme
[Poi2000]病毒 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码 ...
- Bias vs. Variance(1)--diagnosing bias vs. variance
我们的函数是有high bias problem(underfitting problem)还是 high variance problem(overfitting problem),区分它们很得要, ...
- php 递归算法
通过递归实现阶乘 function multi($n){ if($n == 0){ return 1 ;//终止递归 } $value = $n * multi($n-1); return $valu ...
- Spring Boot 2.x实战之定时任务调度
在后端开发中,有些场景是需要使用定时任务的,例如:定时同步一批数据.定时清理一些数据,在Spring Boot中提供了@Scheduled注解就提供了定时调度的功能,对于简单的.单机的调度方案是足够了 ...
- Dobbox
一.向本地仓库导入Dubbox依赖 1.1解压压缩包 1.2打开cmd窗口切到源码包路径 1.3输入命令行 1.4成功后展示如图 1.5输入命令行 1.6成功后如图 public class DoSo ...
- Tensorflow细节-P186-队列与多线程
先感受一下队列之美 import tensorflow as tf q = tf.FIFOQueue(2, "int32") # 创建一个先进先出队列 # 队列中最多可以保存两个元 ...
- 2019-2020-1 20199302《Linux内核原理与分析》第五周作业
一.用户态.内核态和中断 1.一般现代cpu都有几种不用的指令执行级别 2.在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态. 3.在相应的低级别执行状态下, ...