Flutter自定义导航栏插件titled_navigation_bar的使用
Flutter 自定义导航栏插件 titled_navigation_bar
的使用
概述
Titled Bottom Navigation Bar
是一个带有平滑动画效果的漂亮、简洁且简单的底部导航栏。此插件高度可定制,详情请参阅以下内容。
预览(默认模式)
预览(带反转模式)
包概述
- ✅ 可自定义图标颜色
- ✅ 可自定义指示器颜色
- ✅ 支持 2 到 5 个项
- ✅ 反转模式(显示选中的项为图标或标题)
- ✅ 可定义自定义项背景色
- ✅ 使用
currentIndex
属性更新导航栏(通过传递选项卡位置) - ✅ 更新当前索引时无需调用
setState
- ✅ 支持 RTL 文本方向(感谢 Victor Uvarov)
入门指南
按照以下步骤使用此库:
添加插件
在 pubspec.yaml
文件中添加依赖:
dependencies:
...
titled_navigation_bar: ^4.1.0
导入库
在 Dart 文件中导入库:
import 'package:titled_navigation_bar/titled_navigation_bar.dart';
添加组件
在 Scaffold
中添加 TitledBottomNavigationBar
组件:
bottomNavigationBar: TitledBottomNavigationBar(
currentIndex: 2, // 用于通过位置更新导航栏
onTap: (index) {
print("Selected Index: $index");
},
items: [
TitledNavigationBarItem(title: Text('Home'), icon: Icons.home),
TitledNavigationBarItem(title: Text('Search'), icon: Icons.search),
TitledNavigationBarItem(title: Text('Bag'), icon: Icons.card_travel),
TitledNavigationBarItem(title: Text('Orders'), icon: Icons.shopping_cart),
TitledNavigationBarItem(title: Text('Profile'), icon: Icons.person_outline),
]
)
自定义(可选)
TitledBottomNavigationBar
- onTap - 当项目被点击时通知,您可以在此函数中获取当前项目的索引。不应为空!
- items - 您的底部导航栏的项目。使用
TitledNavigationBarItem
类添加项目。不应为空! - curve - 用于定义自定义曲线动画。不应为空!
- reverse - 如果为
true
,则选中项的可见小部件将是文本(带有项的标题)。如果为false
,则选中项的可见小部件将是图标。默认为false
- activeColor - 活动文本/图标的颜色。默认颜色是您的应用主题的
indicatorColor
。 - inactiveColor - 非活动文本/图标的颜色。默认为黑色。
- indicatorColor - 指示器的颜色。默认颜色是您的应用主题的
indicatorColor
。 - currentIndex - 用于通过位置更新导航栏。
- enableShadow - 用于移除导航栏的阴影。
TitledNavigationBarItem
- icon - 此项的图标。这是默认状态,如果反转模式未启用。
- title - 此项的标题。这是默认状态,如果反转模式启用。
完整示例
import 'package:flutter/material.dart';
import 'package:titled_navigation_bar/titled_navigation_bar.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Titled Bar',
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
State createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final List<TitledNavigationBarItem> items = [
TitledNavigationBarItem(title: Text('Home'), icon: Icons.home),
TitledNavigationBarItem(title: Text('Search'), icon: Icons.search),
TitledNavigationBarItem(title: Text('Bag'), icon: Icons.card_travel),
TitledNavigationBarItem(title: Text('Orders'), icon: Icons.shopping_cart),
TitledNavigationBarItem(title: Text('Profile'), icon: Icons.person_outline),
];
bool navBarMode = false;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Titled Bottom Bar"),
),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text("Reversed mode:"),
Switch(
value: navBarMode,
onChanged: (v) {
setState(() => navBarMode = v);
},
),
],
),
),
bottomNavigationBar: TitledBottomNavigationBar(
onTap: (index) => print("Selected Index: $index"),
reverse: navBarMode,
curve: Curves.easeInBack,
items: items,
activeColor: Colors.red,
inactiveColor: Colors.blueGrey,
),
);
}
}
更多关于Flutter自定义导航栏插件titled_navigation_bar的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter自定义导航栏插件titled_navigation_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
titled_navigation_bar
是一个用于 Flutter 的自定义导航栏插件,它允许你创建一个带有标题和图标的底部导航栏。这个插件的使用非常简单,下面是一个基本的示例来展示如何使用它。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 titled_navigation_bar
依赖:
dependencies:
flutter:
sdk: flutter
titled_navigation_bar: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 基本使用
接下来,你可以在你的 Flutter 应用中使用 TitledBottomNavigationBar
组件。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:titled_navigation_bar/titled_navigation_bar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
int _currentIndex = 0;
final List<Widget> _pages = [
Center(child: Text('Home Page')),
Center(child: Text('Search Page')),
Center(child: Text('Profile Page')),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Titled Navigation Bar Example'),
),
body: _pages[_currentIndex],
bottomNavigationBar: TitledBottomNavigationBar(
currentIndex: _currentIndex, // 当前选中的索引
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
items: [
TitledNavigationBarItem(title: 'Home', icon: Icons.home),
TitledNavigationBarItem(title: 'Search', icon: Icons.search),
TitledNavigationBarItem(title: 'Profile', icon: Icons.person),
],
),
);
}
}
3. 参数说明
TitledBottomNavigationBar
提供了多个参数来定制导航栏的外观和行为:
currentIndex
: 当前选中的导航栏项索引。onTap
: 当用户点击导航栏项时触发的回调函数,参数为被点击项的索引。items
: 导航栏项的列表,每个项由TitledNavigationBarItem
定义,包含title
和icon
。activeColor
: 选中项的颜色,默认为主题的主色。inactiveColor
: 未选中项的颜色,默认为灰色。indicatorColor
: 选中项的指示器颜色,默认为activeColor
。curve
: 动画曲线,默认为Curves.easeOutQuad
。duration
: 动画持续时间,默认为Duration(milliseconds: 300)
。
4. 自定义样式
你可以通过修改 activeColor
、inactiveColor
和 indicatorColor
来改变导航栏的外观。例如:
bottomNavigationBar: TitledBottomNavigationBar(
currentIndex: _currentIndex,
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
activeColor: Colors.blue,
inactiveColor: Colors.grey,
indicatorColor: Colors.blueAccent,
items: [
TitledNavigationBarItem(title: 'Home', icon: Icons.home),
TitledNavigationBarItem(title: 'Search', icon: Icons.search),
TitledNavigationBarItem(title: 'Profile', icon: Icons.person),
],
),