Flutter底部导航栏插件stacky_bottom_nav_bar的使用
Flutter底部导航栏插件stacky_bottom_nav_bar的使用
预览
默认亮色模式 | 默认暗色模式 |
---|---|
![]() |
![]() |
⚠️ 重要:添加此小部件时,不要用特定大小包装它,例如用SizedBox包裹。你可以将其放在Stack小部件中,并放在顶部,考虑使用
StackyBottomNavBar.defaultHeight
作为下面小部件的内边距。
开始使用
在pubspec.yaml
文件中添加依赖:
dependencies:
...
stacky_bottom_nav_bar: ^0.0.2
自定义
StackyBottomNavBar
params
是一个包含所有必需和可选参数的StackyBottomNavBarParams
类。
StackyBottomNavBarParams
simpleNavBarItems
是一个长度必须为2的StackySimpleNavBarItem
列表。animatedNavBarItems
是一个长度必须为3的StackyAnimatedNavBarItem
列表。brightness
可以自定义导航栏亮度。bgColor
可以更改导航栏背景颜色。currentSelectedTabIndex
当前选中的标签项,默认为零。必须为0或1。
StackySimpleNavBarItem
icon
简单导航栏项图标数据。onTap
导航栏项点击事件。iconColor
可用于覆盖未选中图标的颜色(可选)。selectedIconColor
可用于覆盖选中图标的颜色(可选)。
StackyAnimatedNavBarItem
icon
动画导航栏项图标数据。onTap
导航栏项点击事件。iconColor
可用于覆盖图标的颜色(可选)。bgColor
可用于覆盖动画导航栏项的背景颜色(可选)。
基本用法示例
import 'package:flutter/material.dart';
import 'package:stacky_bottom_nav_bar/stacky_bottom_nav_bar.dart';
import 'package:logger/logger.dart' as logger;
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _currentIndex = 0;
void _onItemTapped(int index) {
setState(() {
_currentIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Stacky Bottom Nav Bar Demo'),
),
body: Center(
child: Text('当前选中的Tab是: $_currentIndex'),
),
bottomNavigationBar: StackyBottomNavBar(
params: StackyBottomNavBarParams(
animatedNavBarItems: [
StackyAnimatedNavBarItem(
icon: Icons.video_call,
onTap: () => logger.Logger().d("video call"),
),
StackyAnimatedNavBarItem(
icon: Icons.camera_alt,
onTap: () => logger.Logger().d("camera"),
),
StackyAnimatedNavBarItem(
icon: Icons.image,
onTap: () => logger.Logger().d("image"),
),
],
simpleNavBarItems: [
StackySimpleNavBarItem(
icon: Icons.home,
onTap: () => logger.Logger().d("home"),
),
StackySimpleNavBarItem(
icon: Icons.person,
onTap: () => logger.Logger().d("profile"),
),
],
currentSelectedTabIndex: _currentIndex,
),
onTabChange: (int newIndex) {
setState(() {
_currentIndex = newIndex;
});
},
),
);
}
}
更多关于Flutter底部导航栏插件stacky_bottom_nav_bar的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter底部导航栏插件stacky_bottom_nav_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何使用 stacky_bottom_nav_bar
插件在 Flutter 中实现底部导航栏的示例代码。stacky_bottom_nav_bar
是一个流行的 Flutter 插件,用于创建具有堆叠动画效果的底部导航栏。
首先,确保你已经在 pubspec.yaml
文件中添加了 stacky_bottom_nav_bar
依赖项:
dependencies:
flutter:
sdk: flutter
stacky_bottom_nav_bar: ^1.0.0 # 确保使用最新版本
然后,运行 flutter pub get
来获取依赖项。
接下来,是完整的 Flutter 应用代码,展示了如何使用 stacky_bottom_nav_bar
:
import 'package:flutter/material.dart';
import 'package:stacky_bottom_nav_bar/stacky_bottom_nav_bar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Stacky Bottom Nav Bar Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
int selectedIndex = 0;
final List<Widget> screens = [
Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: Text('Home Screen'),
),
),
Scaffold(
appBar: AppBar(
title: Text('Search'),
),
body: Center(
child: Text('Search Screen'),
),
),
Scaffold(
appBar: AppBar(
title: Text('Profile'),
),
body: Center(
child: Text('Profile Screen'),
),
),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: screens[selectedIndex],
bottomNavigationBar: StackyBottomNavigationBar(
selectedIndex: selectedIndex,
items: [
StackyBottomNavigationBarItem(
icon: Icons.home,
title: 'Home',
),
StackyBottomNavigationBarItem(
icon: Icons.search,
title: 'Search',
),
StackyBottomNavigationBarItem(
icon: Icons.person,
title: 'Profile',
),
],
onTap: (index) {
setState(() {
selectedIndex = index;
});
},
animationDuration: 300,
),
);
}
}
解释
- 依赖项:在
pubspec.yaml
中添加stacky_bottom_nav_bar
依赖项。 - 主应用:
MyApp
类是应用的主入口,它定义了主题和初始屏幕。 - 主屏幕:
HomeScreen
是一个有状态的组件,用于管理导航栏的当前选择项和对应的屏幕。 - 屏幕列表:
screens
列表包含了三个不同的屏幕(Home
,Search
,Profile
),每个屏幕都是一个Scaffold
,带有不同的AppBar
和中心文本。 - 底部导航栏:
StackyBottomNavigationBar
组件用于创建底部导航栏。selectedIndex
:当前选中的索引。items
:导航栏项列表,每个项包含图标和标题。onTap
:点击导航项时的回调函数,用于更新当前选中的索引。animationDuration
:动画持续时间(毫秒)。
运行这个示例代码,你会看到一个带有三个导航项的底部导航栏,点击不同的项会在不同的屏幕之间切换,并且带有堆叠动画效果。