Flutter底部导航栏插件ss_bottom_navbar的使用
Flutter底部导航栏插件ss_bottom_navbar
的使用
ss_bottom_navbar
是一个现代的 Flutter 底部导航栏插件,兼容 Android 和 iOS。您可以自由地自定义它。
安装
在 pubspec.yaml
文件中添加依赖:
dependencies:
ss_bottom_navbar: 0.1.1
然后运行以下命令以获取依赖项:
flutter pub get
导入插件:
import 'package:ss_bottom_navbar/src/ss_bottom_navbar.dart';
示例代码
以下是一个完整的示例代码,展示如何使用 ss_bottom_navbar
插件。
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:ss_bottom_navbar/ss_bottom_navbar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SS Bottom NavBar Example App',
home: App(),
);
}
}
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
final _isVisible = true;
final _colors = [Colors.red, Colors.blue, Colors.green, Colors.orange, Colors.teal];
final items = [
SSBottomNavItem(text: 'Home', iconData: Icons.home),
SSBottomNavItem(text: 'Store', iconData: Icons.store),
SSBottomNavItem(text: 'Add', iconData: Icons.add, isIconOnly: true),
SSBottomNavItem(text: 'Explore', iconData: Icons.explore),
SSBottomNavItem(text: 'Profile', iconData: Icons.person),
];
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => SSBottomBarState(),
child: Consumer<SSBottomBarState>(
builder: (context, state, _) {
return Scaffold(
body: IndexedStack(
index: state.selected,
children: _buildPages(),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
state.setSelected(3);
},
child: Icon(_isVisible ? Icons.keyboard_arrow_down : Icons.keyboard_arrow_up),
),
bottomNavigationBar: SSBottomNav(
items: items,
state: state,
color: Colors.black,
selectedColor: Colors.white,
unselectedColor: Colors.black,
visible: _isVisible,
bottomSheetWidget: _bottomSheet(),
showBottomSheetAt: 2,
),
);
},
),
);
}
Widget _page(Color color) => Container(color: color);
List<Widget> _buildPages() => _colors.map((color) => _page(color)).toList();
Widget _bottomSheet() => Container(
color: Colors.white,
child: Column(
children: [
ListTile(
leading: Icon(Icons.camera_alt),
title: Text('Use Camera'),
),
ListTile(
leading: Icon(Icons.photo_library),
title: Text('Choose from Gallery'),
),
ListTile(
leading: Icon(Icons.edit),
title: Text('Write a Story'),
onTap: () {
Navigator.maybePop(context);
},
),
],
),
);
}
效果图
使用说明
创建项目
首先,创建一个 Flutter 项目并安装 ss_bottom_navbar
插件。
初始化状态
final _isVisible = true;
final items = [
SSBottomNavItem(text: 'Home', iconData: Icons.home),
SSBottomNavItem(text: 'Store', iconData: Icons.store),
SSBottomNavItem(text: 'Add', iconData: Icons.add, isIconOnly: true),
SSBottomNavItem(text: 'Explore', iconData: Icons.explore),
SSBottomNavItem(text: 'Profile', iconData: Icons.person),
];
SSBottomBarState _state = SSBottomBarState();
配置底部导航栏
SSBottomNav(
items: items,
state: _state,
color: Colors.black,
selectedColor: Colors.white,
unselectedColor: Colors.black,
onTabSelected: (index) {
debugPrint(index);
setState(() {
_index = index;
});
}
),
带有底部弹出框的示例
SSBottomNav(
items: items,
state: _state,
color: Colors.black,
selectedColor: Colors.white,
unselectedColor: Colors.black,
visible: isVisible,
bottomSheetWidget: Container(),
showBottomSheetAt: 2,
onTabSelected: (index) {}
),
自定义选项
参数名称 | 类型 | 描述 |
---|---|---|
items | List<SSBottomNavItem> | SSBottomNavItem 列表 |
state | SSBottomBarState | 状态管理器 |
iconSize | double | 图标大小 |
backgroundColor | Color | 背景颜色 |
color | Color | 滑块颜色 |
selectedColor | Color | 选中时的颜色 |
unselectedColor | Color | 未选中时的颜色 |
onTabSelected | ValueChanged<int> | 选择时的回调函数 |
shadow | List<BoxShadow> | 阴影效果 |
visible | bool | 是否可见 |
bottomSheetWidget | Widget | 底部弹出框内容 |
showBottomSheetAt | int | 显示底部弹出框的索引值 |
bottomSheetHistory | bool | 是否返回上一个标签页 |
dismissedByAnimation | ValueChanged<bool> | 是否通过动画关闭弹出框的回调函数 |
底部弹出框(SSBottomSheet)
如果需要使用底部弹出框,可以使用 SSBottomSheet
。
使用方法
SSBottomSheet.show(
context: context,
child: bottomSheet(),
onPressed: (offset) {}
);
示例
bottomSheet() => Container(
color: Colors.white,
child: Column(
children: [
ListTile(
leading: Icon(Icons.camera_alt),
title: Text('Use Camera'),
),
ListTile(
leading: Icon(Icons.photo_library),
title: Text('Choose from Gallery'),
),
ListTile(
leading: Icon(Icons.edit),
title: Text('Write a Story'),
),
],
),
);
关闭底部弹出框
Navigator.maybePop(context);
更多关于Flutter底部导航栏插件ss_bottom_navbar的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter底部导航栏插件ss_bottom_navbar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
ss_bottom_navbar
是一个用于 Flutter 的底部导航栏插件,它提供了丰富的自定义选项,使得开发者可以轻松地创建一个漂亮的底部导航栏。以下是使用 ss_bottom_navbar
的基本步骤和示例代码。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 ss_bottom_navbar
的依赖:
dependencies:
flutter:
sdk: flutter
ss_bottom_navbar: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
2. 基本使用
以下是一个简单的示例,展示了如何使用 ss_bottom_navbar
创建一个底部导航栏。
import 'package:flutter/material.dart';
import 'package:ss_bottom_navbar/ss_bottom_navbar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SS Bottom Navbar Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
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('SS Bottom Navbar Example'),
),
body: _pages[_currentIndex],
bottomNavigationBar: SSBottomNavBar(
currentIndex: _currentIndex,
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
items: [
SSBottomNavBarItem(icon: Icons.home, title: 'Home'),
SSBottomNavBarItem(icon: Icons.search, title: 'Search'),
SSBottomNavBarItem(icon: Icons.person, title: 'Profile'),
],
),
);
}
}
3. 自定义选项
ss_bottom_navbar
提供了多种自定义选项,例如:
- 颜色:可以自定义导航栏的背景颜色、选中项的颜色、未选中项的颜色等。
- 动画:可以启用或禁用导航栏项的动画效果。
- 图标大小:可以自定义导航栏图标的大小。
- 标题字体:可以自定义导航栏标题的字体样式。
以下是一个自定义的示例:
SSBottomNavBar(
currentIndex: _currentIndex,
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
items: [
SSBottomNavBarItem(icon: Icons.home, title: 'Home'),
SSBottomNavBarItem(icon: Icons.search, title: 'Search'),
SSBottomNavBarItem(icon: Icons.person, title: 'Profile'),
],
backgroundColor: Colors.blue,
selectedColor: Colors.white,
unselectedColor: Colors.grey,
iconSize: 30,
animationDuration: Duration(milliseconds: 300),
showTitle: true,
titleStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
);