第一百六十九回 如何修改NavigationBar的形状

文章目录

  • 1. 概念介绍
  • 2. 使用方法
  • 3. 代码与效果
    • 3.1 示例代码
    • 3.2 运行效果
  • 4. 内容总结

我们在上一章回中介绍了"如何修改按钮的形状"相关的内容,本章回中将介绍NavigationBar组件.闲话休提,让我们一起Talk Flutter吧。

1. 概念介绍

我们在本章回中介绍的NavigationBar组件主要用来做底部导航栏,它和我们在前面章回中介绍的BottomNavigationBar组件功能相同,用法也相似,只不过在新的
Material3中,官方建议使用NavigationBar取代BottomNavigationBar,接下来我们将详细介绍它的使用方法。

2. 使用方法

和其它Widget一样,NavigationBar提供了相关的属性来控制自己,常用的属性如下:

  • height属性:用来控制该组件的高度;
  • backgroundColor属性:用来控制整个底部的背景色;
  • indicatorColor属性:用来控制标签被选中时的颜色;
  • indicatorShape属性:用来标签被选中时的形状,默认是椭圆形状;
  • selectedIndex属性:用来控制当前被选中的标签索引,默认值为0,表示第一个标签被选中;
  • onDestinationSelected属性:表示选中标签时触发的事件,它是函数类型,从函数的参数中可以得到当前被选中的标签值;
  • destinations属性:用来控制底部显示的标签,它是一个数组,数据中成员的数量就是底部标签的数量,数组类型为NavigationDestination;
    上面介绍的这些属性中大部分和BottomNavigationBar组件的属性功能类似,只是属性的名称不同。不过该组件提供了height属性来控制组件的高度,这是该组件特
    有的属性,也是十分实用的属性,因为在项目中经常需要调整底部导航栏高度。

3. 代码与效果

3.1 示例代码

介绍完Navigation组件的使用方法,我们通过具体的代码来演示它的使用方法,详细如下:

NavigationBar(
  //控制destination中Icon外围的形状,默认是16圆角矩形
  indicatorShape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24)),
  //按钮被选中时外围的颜色
  indicatorColor: Colors.yellow,
  backgroundColor: Colors.lightBlueAccent,
  //阴影颜色,不是很明显
  shadowColor: Colors.green,
  //这个颜色在背景色后面,不设置背景色时才能看到,而且有阴影效果
  surfaceTintColor: Colors.redAccent,
  //调整高度
  height: 80,
  selectedIndex: currentIndex,
  onDestinationSelected: (index) {
    setState(() {
      currentIndex = index;
    });
  },

  //可以单独添加选择时显示的按钮
  destinations: const [
    NavigationDestination(
        icon: Icon(Icons.person),
        selectedIcon: Icon(Icons.person_2_rounded),
        label:"Person" ),
    NavigationDestination(icon: Icon(Icons.home), label: "Home"),
    NavigationDestination(icon: Icon(Icons.settings), label: "Setting"),
  ],
),

3.2 运行效果

我们在上面的代码中添加添加了详细的注释,这样有助于大家理解代码,示例代码中还有一个地方需要介绍:导航栏的图标分点击和非点击两种,默认设置的是非点击时的
图标,可以通过selectedIcon来设置点击时的图标。详细的操作可以查看示例代码。此外,NavigationBar还有一些不太常用的属性,主要是修改各种颜色,我在这
里就一一介绍了,建议大家自己动手去实践。下面是该示例程序运行后的效果图,请大家参考。

在这里插入图片描述

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • NavigationBar主要用来实现底部导航栏功能,它是Matirial3引入的组件;
  • BottomNavigationBar被NavigationBar替代了,不过它们的用法十分相似;
  • NavigationBar提供了相关的属性来控制自己,新引入的height属性十分实用;
  • NavigationBar在设置导航图标时提供了两个属性来控制点击和非点击状状态,有利于设置不同状态的图标;
    看官们,与"NavigationBar组件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/134194.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

javaEE案例,前后端交互,计算机和用户登录

加法计算机,前端的代码如下 : 浏览器访问的效果如图 : 后端的代码如下 再在浏览器进行输入点击相加,就能获得结果 开发中程序报错,如何定位问题 1.先定位前端还是后端(通过日志分析) 1)前端 : F12 看控制台 2)后端 : 接口,控制台日志 举个例子: 如果出现了错误,我们就在后端…

WebSocket是什么以及其与HTTP的区别

新钛云服已累计为您分享774篇技术干货 HTTP协议 HTTP是单向的,客户端发送请求,服务器发送响应。举个例子,当用户向服务器发送请求时,该请求采用HTTP或HTTPS的形式,在接收到请求后,服务器将响应发送给客户端…

Linux技能篇-yum源搭建(本地源和公网源)

文章目录 前言一、yum源是什么?二、使用镜像搭建本地yum源1.搭建临时仓库第一步:挂载系统ios镜像到虚拟机第二步:在操作系统中挂载镜像第三步:修改yum源配置文件 2.搭建本地仓库第一步:搭建临时yum源来安装httpd并做文…

在Win11中使用docker安装Oracle19c

在Win11中使用docker安装Oracle19c 首先是去docker官网下 docker for windows安装oracle19c首先下载image运行镜像在工具中登录可能遇到的问题 首先是去docker官网下 docker for windows 官网: https://www.docker.com/get-started/ 如果Windows是专业版&#xff0…

【Git】Git使用Gui图形化界面,Git中SSH协议,Idea集成Git

一,Git使用Gui图形化界面 1.1 Gui的简介 Gui (Graphical User Interface)指的是图形用户界面,也就是指使用图形化方式来协同人和计算机进行交互的一类程序。它与传统的命令行界面相比,更加直观、易用,用户…

智慧城市数据中台建设方案:PPT全文51页,附下载

关键词:智慧城市解决方案,数据中台解决方案,智慧城市建设,数据中台技术架构,数据中台建设 一、智慧城市数据中台建设背景 智慧城市数据中台是在城市数字化转型和智能化升级的背景下提出的,旨在实现城市数…

ABAQUS分析步笔记

定义原则: 每个step的所有边界条件,载荷条件累加构成本step的仿真效果; step2需要在step1的状态基础上进行载荷运动等限定时,需要确保在step2中传递了step1的想要保留的特征,如: 1、BC-1 这里的BC-1的固…

积极应对云网络安全

以下是 IT 领导者需要了解的内容,才能在云网络安全方面占据上风。 如果您的组织尚未主动解决云网络安全问题,则将面临灾难的风险。等待攻击发生根本没有意义。 主动云安全会采取积极措施来发现潜在威胁并在网络攻击发生之前阻止网络攻击。 这是通过持…

java 继承和多态 (图文搭配,万字详解!!)

目录 1.继承 1.1 为什么需要继承 1.2 继承概念 1.3 继承的语法 1.4 父类成员访问 1.4.1 子类中访问父类的成员变量 1.4.2 子类中访问父类的成员方法 1.5 super关键字 1.6 子类构造方法 1.7 super和this 1.8 再谈初始化 1.9 protected 关键字 1.10 继承方式 1.11 f…

OpenCV C++ 图像处理实战 ——《多二维码识别》

OpenCV C++ 图像处理实战 ——《多二维码识别》 一、结果演示二、zxing库配置2.1下载编译三、多二维码识别3.1 Method one3.1.1 源码3.2 Method two3.2.1 源码四、源码测试图像下载总结一、结果演示 </

第 117 场 LeetCode 双周赛题解

A 给小朋友们分糖果 I 动态规划&#xff1a;设 p [ k ] [ i ] p[k][i] p[k][i] 为将 i i i 个糖果分给 k k k 个小朋友的方案数&#xff0c;先求 p [ 2 ] [ i ] p[2][i] p[2][i] &#xff0c;再求 p [ 3 ] [ n ] p[3][n] p[3][n] class Solution { public:using ll long …

基于Python+OpenCV+SVM车牌识别系统-车牌预处理系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介简介系统流程系统优势 二、功能三、系统四. 总结 一项目简介 ## PythonOpenCVSVM车牌识别系统介绍 简介 PythonOpenCVSVM车牌识别系统是一种基于计算机视…

【C++】this指针讲解超详细!!!

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

postman接口自动化测试

Postman除了前面介绍的一些功能&#xff0c;还有其他一些小功能在日常接口测试或许用得上。今天&#xff0c;我们就来盘点一下&#xff0c;如下所示&#xff1a; 1.数据驱动 想要批量执行接口用例&#xff0c;我们一般会将对应的接口用例放在同一个Collection中&#xff0c;然…

Dubbo从入门到上天系列第五篇:Dubbo3与JDK17不兼容问题展示

文章目录 一&#xff1a;JDK 与 Dubbo版本对应问题说明 1&#xff1a;问题1 2&#xff1a;问题2 二&#xff1a;Spring与JDK版本对应关系 1&#xff1a;对应关系详图 2&#xff1a;JDK与Major对应关系图 大神链接&#xff1a;作者有幸结识技术大神孙哥为好友&#xff0c…

asp.net学生宿舍管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 学生宿舍管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net学生宿舍管理系统1 应用技…

C语言达到什么水平才能从事单片机工作

C语言达到什么水平才能从事单片机工作 从事单片机工作需要具备一定的C语言编程水平。以下是几个关键要点&#xff1a;基本C语言知识&#xff1a; 掌握C语言的基本语法、数据类型、运算符、流控制语句和函数等基本概念。最近很多小伙伴找我&#xff0c;说想要一些C语言学习资料&…

5G+智慧港口建设解决方案

一、智慧港口建设背景 智慧港口是随着时代进步发展起来的一种现代港口运输的新业态&#xff0c;它是以现代化基础设施为基础&#xff0c;促使大数据、云计算、物联网、移动互联网、智能控制等新一代信息技术与港口运输业务深度融合&#xff0c;以港口运输组织服务创新为动力&am…

Jenkins 质量扫描

代码质量扫描工具&#xff08;SonarQube&#xff09; 质量评审 SonarQube有四个关键组件 ◼ SonarQube Server运行有三个组件 ◆ Web Server&#xff1a;UI ◆ Search Server&#xff1a;为UI提供搜索功能&#xff0c;基于ElasticSearch ◆ Compute Engine Server&#xff1a…