Flutter -------- BottomNavigationBar 界面切换

摘要:
BottomNavigationBarType.fixed,当少于四个项目时的默认值。如果选中的项为非null,则使用fixedColor渲染,否则使用主题的ThemeData.primaryColor。导航栏的背景颜色是默认的材质背景颜色,ThemeData.canvasColor。所有项目都以白色呈现,导航栏的背景颜色与所选项目的BottomNavigationBarItem.backgroundColor相同。在这种情况下,假设每个项目将具有不同的背景颜色,并且背景颜色将与白色形成鲜明对比。

Android 中有BottomNavigationBar+Fragment切换

而在Flutter也有的BottomNavigationBar

效果图

Flutter -------- BottomNavigationBar 界面切换第1张

底部有两种情况

底部导航栏的类型更改其项目的显示方式。如果未指定,则 当少于四个项时,它会自动设置为BottomNavigationBarType.fixed, 否则为BottomNavigationBarType.shifting。

BottomNavigationBarType.fixed,当少于四个项目时的默认值。如果选中的项为非null,则使用fixedColor渲染,否则使用主题的ThemeData.primaryColor。导航栏的背景颜色是默认的材质背景颜色,ThemeData.canvasColor(基本上是不透明的白色)。

BottomNavigationBarType.shifting,当有四个或更多项时的默认值。所有项目都以白色呈现,导航栏的背景颜色与所选项目的BottomNavigationBarItem.backgroundColor相同 。在这种情况下,假设每个项目将具有不同的背景颜色,并且背景颜色将与白色形成鲜明对比。

超出4个默认情况:

Flutter -------- BottomNavigationBar 界面切换第2张

代码:

class BottomNavigationBarLnt extendsStatefulWidget {
  BottomNavigationBarLnt({Key key}) : super(key: key);
  @override
  BottomNavigationBarTest createState() =>BottomNavigationBarTest();
}
class BottomNavigationBarTest extends State<BottomNavigationBarLnt>{
  int _cuurentIndex = 0;
  final List<Widget> chiledList =[Home(),Tab2(),Tab3(),Home()];
  final List<BottomNavigationBarItem> _listItem = <BottomNavigationBarItem>[
    BottomNavigationBarItem(
        icon: Icon(Icons.home),
        title: Text("Home")
    ),
    BottomNavigationBarItem(
      icon: Icon(Icons.book),
      title: Text("book")
    ),
    BottomNavigationBarItem(
      icon: Icon(Icons.music_video),
      title: Text("music")
    ),
    BottomNavigationBarItem(
        icon: Icon(Icons.movie),
        title: Text("movie")
    ),
  ];
  @override
  Widget build(BuildContext context) {
    //TODO: implement build
    returnScaffold(
      bottomNavigationBar: BottomNavigationBar(
          items: _listItem,
          fixedColor: Colors.blue,
         //type: BottomNavigationBarType.fixed,
currentIndex: _cuurentIndex,
          onTap: _onItemTapped,
      ),
      body: chiledList[_cuurentIndex],
    );
  }
  void _onItemTapped(intindex) {
    setState(() {
      _cuurentIndex =index;
    });
  }
}

超过4个item时添加类型 type: BottomNavigationBarType.fixed,

把上面注释的代码打开就行

Flutter -------- BottomNavigationBar 界面切换第3张

官方文档
https://docs.flutter.io/flutter/material/BottomNavigationBar-class.html

免责声明:文章转载自《Flutter -------- BottomNavigationBar 界面切换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇asp.net 生命周期(转)四、js对象的基本用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

flutter开发之配置环境以及一些问题的处理方案~

  今天flutter1.0已经发布了,有没有一点小小的兴奋,为了纪念这个令人激动的日子,我决定发一篇flutter的基本环境搭建的教程送给大家:)   由于这是一篇关于flutter配置环境的教程,在这里对于flutter的神奇之处我就不做过多介绍了,直接发车: 首先你的环境要满足这些基本条件: 1.win7 sp1或者更高版本(64位)2.400mb...

Flutter BottomSheet底部弹窗效果

BottomSheet是一个从屏幕底部滑起的列表(以显示更多的内容)。你可以调用showBottomSheet()或showModalBottomSheet弹出 import 'package:flutter/material.dart'; import 'dart:async'; class BottomSheetDemo extendsStatef...

在 macOS 上搭建 Flutter 开发环境

下载 Flutter SDK flutter官网下载:https://flutter.io/sdk-archive/#macos 若上述链接无法访问,可通过GitHub下载 https://github.com/flutter/flutter/releases 将下载的 flutter sdk 解压到一个地方(这里解压完成后的目录地址之后要用到),例如我直...

flutter 环境出错后排查

莫名其妙地环境坏了 VSCode 终端里执行 flutter run 卡在 installing.. 模拟器上闪了一下,打不开,应该是安装出错爆掉了 flutter doctor 检查一下: X Android license status unknownTry re-installing or updating your Android SDK Mana...

ReactiveX 学习笔记(35)使用 RxDart + RxCommand 进行 GUI 编程

课题 程序界面由3个文本编辑框和1个文本标签组成。 要求文本标签实时显示3个文本编辑框所输入的数字之和。 文本编辑框输入的不是合法数字时,将其值视为0。 3个文本编辑框的初值分别为1,2,3。 创建工程 Flutter 安装完毕之后执行以下命令创建工程 flutter create rx_example 打开 Android Studio,File...

相比同为开源框架的uniapp和flutter未来生态前景大对比

相比同为开源框架的uniapp和flutter未来生态前景谁更好? 目前来说uniapp和flutter算是非常强大和平衡的两款混合开发APP框架 首先表明一下观念,更加看好dcloud的uniapp!我知道接下来会有人开始喷了,我们来慢慢细说一下,首先flutter的确是谷歌的亲生儿子,   flutter的未来 优势: 1,高性能 最贴近原生APP的就...