Flutter——最详细(NavigationRail)使用教程

NavigationRail 简介

一个 Material Design 小部件,旨在显示在应用程序的左侧或右侧,以便在少量视图(通常在三到五个视图之间)之间导航。

使用场景:

通过Row属性,左侧或右侧菜单栏按钮

属性作用
onDestinationSelected选择索引回调监听器
selectedIndex目前选定目的地的索引
destinations存放菜单按钮
backgroundColor导航栏背景色
elevation海拔高度
height导航栏高度
labelType是否展示菜单栏底部文字
shadowColor阴影颜色
animationDuration胶囊动画显示时长
indicatorShape选中菜单背景圆角或者边框样式
indicatorColor选中菜单背景色
leading顶部菜单按钮
trailing底部菜单按钮
groupAlignmenttop,center,bottom 菜单按钮的显示位置
selectedLabelTextStyle文字选择的样式
unselectedLabelTextStyle文字未选择的样式
useIndicator是否显示选中菜单背景色
minWidth最小宽度

属性 groupAlignment: top、center、bottom

top
top
center
在这里插入图片描述
bottom
在这里插入图片描述

leading: 顶部菜单按钮

在这里插入图片描述

trailing: 底部菜单按钮

在这里插入图片描述

indicatorShape: 设置按钮背景圆角样式

在这里插入图片描述

代码块

import 'package:flutter/material.dart';class NavigationRails extends StatefulWidget {const NavigationRails({super.key});State<NavigationRails> createState() => _NavigationRailsState();
}class _NavigationRailsState extends State<NavigationRails> {int _selectedIndex = 0;NavigationRailLabelType labelType = NavigationRailLabelType.all;bool showLeading = false;bool showTrailing = false;double groupAlignment = -1.0;Widget build(BuildContext context) {return Scaffold(body: Row(children: <Widget>[NavigationRail(selectedIndex: _selectedIndex,groupAlignment: groupAlignment,onDestinationSelected: (int index) {setState(() {_selectedIndex = index;});},labelType: labelType,minExtendedWidth: 150,indicatorColor: Colors.red,indicatorShape:  RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0),side: BorderSide(color: Colors.yellow, width: 2.0),),leading: showLeading? FloatingActionButton(elevation: 0,onPressed: () {// Add your onPressed code here!},child: const Icon(Icons.add),): const SizedBox(),trailing: showTrailing? IconButton(onPressed: () {// Add your onPressed code here!},icon: const Icon(Icons.more_horiz_rounded),): const SizedBox(),destinations: const <NavigationRailDestination>[NavigationRailDestination(icon: Icon(Icons.favorite_border),selectedIcon: Icon(Icons.favorite),label: Text('First'),),NavigationRailDestination(icon: Icon(Icons.bookmark_border),selectedIcon: Icon(Icons.book),label: Text('Second'),),NavigationRailDestination(icon: Icon(Icons.star_border),selectedIcon: Icon(Icons.star),label: Text('Third'),),],),const VerticalDivider(thickness: 1, width: 1),// This is the main content.Expanded(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[Text('selectedIndex: $_selectedIndex'),const SizedBox(height: 20),Text('Label type: ${labelType.name}'),const SizedBox(height: 10),OverflowBar(spacing: 10.0,children: <Widget>[ElevatedButton(onPressed: () {setState(() {labelType = NavigationRailLabelType.none;});},child: const Text('None'),),ElevatedButton(onPressed: () {setState(() {labelType = NavigationRailLabelType.selected;});},child: const Text('Selected'),),ElevatedButton(onPressed: () {setState(() {labelType = NavigationRailLabelType.all;});},child: const Text('All'),),],),const SizedBox(height: 20),Text('Group alignment: $groupAlignment'),const SizedBox(height: 10),OverflowBar(spacing: 10.0,children: <Widget>[ElevatedButton(onPressed: () {setState(() {groupAlignment = -1.0;});},child: const Text('Top'),),ElevatedButton(onPressed: () {setState(() {groupAlignment = 0.0;});},child: const Text('Center'),),ElevatedButton(onPressed: () {setState(() {groupAlignment = 1.0;});},child: const Text('Bottom'),),],),const SizedBox(height: 20),OverflowBar(spacing: 10.0,children: <Widget>[ElevatedButton(onPressed: () {setState(() {showLeading = !showLeading;});},child:Text(showLeading ? 'Hide Leading' : 'Show Leading'),),ElevatedButton(onPressed: () {setState(() {showTrailing = !showTrailing;});},child: Text(showTrailing ? 'Hide Trailing' : 'Show Trailing'),),],),],),),],),);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Batch之读数据—读多文件(三十三)

一、读多文件 前面的所有文件的读取基本上是对单文件执行的&#xff0c;在实际应用中&#xff0c;我们经常操作批量的文件。 Spring Batch框架提供了现有的组件MultiResourceItemReader支持对多文件的读取&#xff0c;通过MultiResourceItemReader读取批量文件非常简单。MultiR…

华为云CodeArts产品体验的心得体会及想法

文章目录 前言CodeArts 的产品优势一站式软件开发生产线研发安全Built-In华为多年研发实践能力及规范外溢高质高效敏捷交付 功能特性说明体验感受问题描述完结 前言 华为云作为一家全球领先的云计算服务提供商&#xff0c;致力于为企业和个人用户提供高效、安全、可靠的云服务。…

那些漏洞挖掘高手都是怎么挖漏洞的?

前言 说到安全就不能不说漏洞&#xff0c;而说到漏洞就不可避免地会说到三座大山&#xff1a; 漏洞分析 漏洞利用 漏洞挖掘 从个人的感觉上来看&#xff0c;这三者尽管通常水乳交融、相互依赖&#xff0c;但难度是不尽相同的。本文就这三者分别谈谈自己的经验和想法。 漏洞分析…

解决appium-doctor报opencv4nodejs cannot be found

一、下载cmake 在CMake官网下载&#xff1a;cmake-3.6.1-win64-x64.msi 二、安装cmake cmake安装过程 在安装时要选择勾选为所有用户添加CMake环境变量 三、检查cmake安装 重新管理员打开dos系统cmd命令提示符&#xff0c;输入cmake -version cmake -version四、安装opencv4no…

驱动程序设计 利用RTC显示年月日时分秒到终端 7.11

驱动控制RTC 用户需求&#xff1a;写一个RTC时钟控制的驱动&#xff0c;实现RTC显示年月日时分秒到用户端 驱动需求&#xff1a;设备&#xff1a;RTC模块 功能&#xff1a;打印显示 寄存器操作&#xff1a; 原理图&#xff1a; 设备–>pin–>设备控制芯片 ​ 驱动需求 …

55 # 实现可写流

先在 LinkedList.js 给链表添加一个移除方法 class Node {constructor(element, next) {this.element element;this.next next;} }class LinkedList {constructor() {this.head null; // 链表的头this.size 0; // 链表长度}// 可以直接在尾部添加内容&#xff0c;或者根据…

国内流行的数据可视化软件工具

在信息爆炸的时代&#xff0c;越来越多的数据堆积如山。但是&#xff0c;这些密集的数据没有重点且可读性较差。因此&#xff0c;我们需要数据可视化来帮助数据易于理解和接受。相比之下&#xff0c;可视化更直观、更有意义&#xff0c;使用适当的数据可视化工具来可视化数据非…

密码学总结杂七杂八的wp

快捷键 折叠&#xff08;展开&#xff09;所有代码这里是指按下快捷键后凡事.py文件里可折叠的都折叠。 折叠所有代码&#xff1a;Ctrl Shift - &#xff08;减号&#xff09; 展开所有代码&#xff1a;Ctrl Shift &#xff08;加号&#xff09; 折叠&#xff08;展开&…

在Illustrator中创建 3D 冰淇淋模型对象

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 一旦你学会了如何在Illustrator中制作一个对象3D&#xff0c;你可以前往Envato Elements&#xff0c;在那里你可以找到大量的3D设计来激发你的灵感。这个基于订阅的市场拥有超过 2&#xff0c;000 个 Illus…

一、音频基础-音频分析的重要工具(语谱图)

文章目录 1. 傅里叶转换2. 语谱图3. 应用1. 傅里叶转换 通过前面的描述可以知道,声音的本质就是各种声波,那么任意某一个时刻,都不可能是只有一个频率的波,而且声波也不可能是我们理解的标准的正弦波: 而一般我们对声音进行处理时,需要分析出频率当中的有哪些频率,然…

麒麟SP3X86系统下,安装Oracle11g数据库

目录 1、写在前面 2、准备工作 2.1 环境准备 2.2 数据库安装前准备 2.2.1 安装依赖 2.2.2 系统环境准备 2.2.3 上传软件安装包 2.2.4 安装调图形化界面的依赖和相关设置 3、执行安装程序 1、写在前面 随着国产化进程&#xff0c;各大应用需要在国产服务器上面进行部署…

Python调用ImageMagick生成PDF文件缩略图

使用Python调用ImageMagick生成PDF文件缩略图 Imagemagick使用Ghostscript作为其依赖项之一&#xff0c;以便能够处理和转换PDF相关的图像。 准备 安装Ghostscript&#xff0c;网站安装ImageMagick&#xff0c;网站 安装完毕后&#xff0c;需要自行配置环境路径 脚本 使用示…