Flutter自定义导航栏插件own_navbar的使用
Flutter自定义导航栏插件own_navbar的使用
简介
own_navbar
是一个用于创建响应式导航栏的 Flutter 插件。它可以稳定地在任何移动平台上运行,并且安装简单。
依赖添加:
own_navbar: any
开始使用
以下是暗模式和亮模式的预览图:
最小化代码示例
以下是最小化的代码实现:
import 'package:flutter/material.dart';
import 'package:own_navbar/own_navbar.dart';
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final List<NavBarItem> navItems = [
NavBarItem(
elementIcon: Icons.home,
elementName: "Home Page",
navigationId: 'home',
),
NavBarItem(
elementIcon: Icons.add_alert,
elementName: "Alerts",
navigationId: 'alert',
),
NavBarItem(
elementIcon: Icons.add,
elementName: "Add Feed",
navigationId: 'feed',
),
NavBarItem(
elementIcon: Icons.call,
elementName: "Contact",
navigationId: 'contact',
),
NavBarItem(
elementIcon: Icons.person,
elementName: "Profile",
navigationId: 'profile',
),
];
void onItemClicked(int index, String navId) {
print('Clicked index is $index \nClicked NavId is $navId');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text("Main Content"),
),
bottomNavigationBar: BottomNavbar(
navItems: navItems,
height: MediaQuery.of(context).size.height / 18,
itemClicked: onItemClicked,
),
);
}
}
属性描述
以下是 BottomNavbar
的主要属性及其描述:
-
navItems
类型:List<NavBarItem>
功能:用于创建导航栏项,支持三种类型:带图标和文字、仅图标、仅文字。示例代码:
NavBarItem( elementIcon: Icons.home, elementName: "Home Page", navigationId: 'home', ),
-
height
类型:double
功能:设置底部导航栏的高度。建议使用MediaQuery.of(context).size.height / 18
来动态调整高度,以适应不同设备。示例代码:
height: MediaQuery.of(context).size.height / 18,
-
itemClicked
类型:Function(int index, String navId)
功能:当用户点击导航栏项时触发的回调函数,返回点击项的索引和对应的navigationId
。示例代码:
itemClicked: (int index, String navId) { print('Clicked index is $index \nClicked NavId is $navId'); },
-
其他属性
own_navbar
提供了许多其他属性,例如颜色、背景色等。可以查看pubspec.yaml
文件并添加依赖来进一步探索这些属性。
完整示例代码
以下是一个完整的示例代码,展示了如何使用 own_navbar
创建一个响应式导航栏:
import 'package:flutter/material.dart';
import 'package:own_navbar/own_navbar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final List<NavBarItem> navItems = [
NavBarItem(
elementIcon: Icons.home,
elementName: "Home Page",
navigationId: 'home',
),
NavBarItem(
elementIcon: Icons.add_alert,
elementName: "Alerts",
navigationId: 'alert',
),
NavBarItem(
elementIcon: Icons.add,
elementName: "Add Feed",
navigationId: 'feed',
),
NavBarItem(
elementIcon: Icons.call,
elementName: "Contact",
navigationId: 'contact',
),
NavBarItem(
elementIcon: Icons.person,
elementName: "Profile",
navigationId: 'profile',
),
];
void onItemClicked(int index, String navId) {
print('Clicked index is $index \nClicked NavId is $navId');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Own Navbar Example"),
),
body: Center(
child: Text("Main Content"),
),
bottomNavigationBar: BottomNavbar(
navItems: navItems,
height: MediaQuery.of(context).size.height / 18,
itemClicked: onItemClicked,
),
);
}
}
更多关于Flutter自定义导航栏插件own_navbar的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter自定义导航栏插件own_navbar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
own_navbar
是一个自定义的 Flutter 导航栏插件,允许开发者根据自己的需求创建个性化的底部导航栏。以下是如何使用 own_navbar
插件的详细步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 own_navbar
插件的依赖:
dependencies:
flutter:
sdk: flutter
own_navbar: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入包
在需要使用 own_navbar
的 Dart 文件中导入包:
import 'package:own_navbar/own_navbar.dart';
3. 创建自定义导航栏
使用 OwnNavBar
组件来创建自定义导航栏。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:own_navbar/own_navbar.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(
body: _pages[_currentIndex],
bottomNavigationBar: OwnNavBar(
currentIndex: _currentIndex,
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
items: [
OwnNavBarItem(
icon: Icons.home,
label: 'Home',
),
OwnNavBarItem(
icon: Icons.search,
label: 'Search',
),
OwnNavBarItem(
icon: Icons.person,
label: 'Profile',
),
],
),
);
}
}
4. 自定义导航栏样式
OwnNavBar
提供了多种自定义选项,例如颜色、图标大小、标签样式等。以下是一些常见的自定义选项:
OwnNavBar(
currentIndex: _currentIndex,
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
items: [
OwnNavBarItem(
icon: Icons.home,
label: 'Home',
activeColor: Colors.blue,
inactiveColor: Colors.grey,
),
OwnNavBarItem(
icon: Icons.search,
label: 'Search',
activeColor: Colors.blue,
inactiveColor: Colors.grey,
),
OwnNavBarItem(
icon: Icons.person,
label: 'Profile',
activeColor: Colors.blue,
inactiveColor: Colors.grey,
),
],
backgroundColor: Colors.white,
elevation: 5.0,
iconSize: 24.0,
labelStyle: TextStyle(fontSize: 12.0),
)
5. 处理导航栏点击事件
OwnNavBar
的 onTap
回调函数用于处理导航栏项的点击事件。你可以在这个回调中更新当前选中的索引,并切换页面。
onTap: (index) {
setState(() {
_currentIndex = index;
});
},