iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Flutter——最详细(NavigationRail)使用教程
  • 334
分享到

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

flutter 2023-09-12 10:09:42 334人浏览 薄情痞子
摘要

NavigationRail 简介 一个 Material Design 小部件,旨在显示在应用程序的左侧或右侧,以便在少量视图(通常在三到五个视图之间)之间导航。 使用场景: 通过Row属

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'),                    ),                  ],                ),              ],            ),          ),        ],      ),    );  }}

来源地址:https://blog.csdn.net/u013290250/article/details/131792923

--结束END--

本文标题: Flutter——最详细(NavigationRail)使用教程

本文链接: https://www.lsjlt.com/news/404328.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作