Flutter底部浮动导航栏插件floating_bottom_bar的使用
Flutter底部浮动导航栏插件floating_bottom_bar的使用
floating_bottom_bar
插件为Flutter应用提供了一个具有动画效果的浮动底部导航栏,它将一个浮动操作按钮(FAB)置于中心,并且通过 AnimatedContainer
和 SlideTransition
来实现底部导航栏图标的动画效果。
Floating Bottom Bar
Usage
示例代码
以下是一个完整的示例demo,展示了如何在Flutter项目中使用floating_bottom_bar
插件:
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:floating_bottom_bar/animated_bottom_navigation_bar.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: "App Name",
theme: ThemeData(fontFamily: 'Poppins'),
home: const BottomNavigatorExample(title: "App Name"),
);
}
}
class BottomNavigatorExample extends StatefulWidget {
const BottomNavigatorExample({Key? key, required this.title})
: super(key: key);
final String title;
@override
State<BottomNavigatorExample> createState() => _BottomNavigatorExampleState();
}
class _BottomNavigatorExampleState extends State<BottomNavigatorExample> {
bool circleButtonToggle = false;
List<Color> listOfColor = [
const Color(0xFFF2B5BA),
Colors.orange,
Colors.amber,
Colors.deepOrangeAccent
];
int index = 1;
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: AppBar(
elevation: 3,
backgroundColor: Colors.redAccent,
title: Text(widget.title),
),
backgroundColor: listOfColor[index],
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
bottomNavigationBar: AnimatedBottomNavigationBar(
barColor: Colors.white,
controller: FloatingBottomBarController(initialIndex: 1),
bottomBar: [
BottomBarItem(
icon: const Icon(Icons.home, size: 24),
iconSelected: const Icon(Icons.home, color: Colors.redAccent, size: 24),
title: "Home",
dotColor: Colors.redAccent,
onTap: (value) {
setState(() {
index = value;
});
log('Home $value');
},
),
BottomBarItem(
icon: const Icon(Icons.photo, size: 24),
iconSelected: const Icon(Icons.photo, color: Colors.redAccent, size: 24),
title: "Search",
dotColor: Colors.redAccent,
onTap: (value) {
setState(() {
index = value;
});
log('Search $value');
},
),
BottomBarItem(
icon: const Icon(Icons.person, size: 24),
iconSelected: const Icon(Icons.person, color: Colors.redAccent, size: 24),
title: "Person",
dotColor: Colors.redAccent,
onTap: (value) {
setState(() {
index = value;
});
log('Profile $value');
},
),
BottomBarItem(
icon: const Icon(Icons.settings, size: 24),
iconSelected: const Icon(Icons.settings, color: Colors.redAccent, size: 24),
title: "Settings",
dotColor: Colors.redAccent,
onTap: (value) {
setState(() {
index = value;
});
log('Settings $value');
},
),
],
bottomBarCenterModel: BottomBarCenterModel(
centerBackgroundColor: Colors.redAccent,
centerIcon: const FloatingCenterButton(
child: Icon(
Icons.add,
color: Colors.white,
),
),
centerIconChild: [
FloatingCenterButtonChild(
child: const Icon(
Icons.home,
color: Colors.white,
),
onTap: () => log('Item1'),
),
FloatingCenterButtonChild(
child: const Icon(
Icons.access_alarm,
color: Colors.white,
),
onTap: () => log('Item2'),
),
FloatingCenterButtonChild(
child: const Icon(
Icons.ac_unit_outlined,
color: Colors.white,
),
onTap: () => log('Item3'),
),
],
),
),
),
);
}
}
Required Parameters
bottomBar:
此属性接收一个List<BottomBarItem>
类型的列表,用于配置底部导航栏中的各个选项。
bottomBarCenterModel:
BottomBarCenterModel
类是底部菜单的模型类。它接受icon、iconSelected、title、titleStyle等参数来定义中心按钮及其子项。
controller:
FloatingBottomBarController
用于给底部导航栏设置初始索引,以预选某个项目。
Guideline for contributors
我们欢迎任何对仓库的贡献,请贡献者只向develop分支创建拉取请求。
Guideline to report an issue/feature request
如果您需要报告问题或提出功能请求,建议分享以下信息以便我们更好地理解问题的根源:
- 库版本
- 代码片段
- 日志(如果适用)
- 设备规格(如制造商、操作系统版本等)
- 展示问题重现步骤的截图或视频
LICENSE
该库遵循MIT许可证。
Let us know!
如果您有任何问题或关于我们工作的建议,或者您想分享使用我们组件的项目链接,请发送邮件至sales@mindinventory.com。
更多关于Flutter底部浮动导航栏插件floating_bottom_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter底部浮动导航栏插件floating_bottom_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用floating_bottom_bar
插件来实现底部浮动导航栏的代码示例。
首先,确保你已经在pubspec.yaml
文件中添加了floating_bottom_bar
依赖:
dependencies:
flutter:
sdk: flutter
floating_bottom_bar: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤实现底部浮动导航栏:
- 导入依赖:
在你的主Dart文件中(例如main.dart
),导入floating_bottom_bar
:
import 'package:flutter/material.dart';
import 'package:floating_bottom_bar/floating_bottom_bar.dart';
- 定义页面内容:
定义你想要在导航栏点击时显示的页面内容。例如,可以创建几个简单的页面:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Home')),
body: Center(child: Text('Home Page')),
);
}
}
class SearchPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Search')),
body: Center(child: Text('Search Page')),
);
}
}
class ProfilePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Profile')),
body: Center(child: Text('Profile Page')),
);
}
}
- 创建底部浮动导航栏:
在你的主Dart文件中,创建并配置FloatingActionButton
和FloatingBottomBar
:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
int currentIndex = 0;
final List<Widget> pages = [
HomePage(),
SearchPage(),
ProfilePage(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: IndexedStack(
index: currentIndex,
children: pages,
),
floatingActionButton: FloatingActionButton(
onPressed: () {},
child: Icon(Icons.add),
backgroundColor: Colors.blue,
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
bottomNavigationBar: FloatingBottomBar(
items: [
FloatingBottomBarItem(
icon: Icons.home,
title: 'Home',
backgroundColor: Colors.blue,
),
FloatingBottomBarItem(
icon: Icons.search,
title: 'Search',
backgroundColor: Colors.blue,
),
FloatingBottomBarItem(
icon: Icons.person,
title: 'Profile',
backgroundColor: Colors.blue,
),
],
onTabSelected: (index) {
setState(() {
currentIndex = index;
});
},
backgroundColor: Colors.white,
activeColor: Colors.blue,
inactiveColor: Colors.grey,
notchedShape: CircularNotchedRectangleShape(),
fabLocation: FloatingActionLocation.center,
),
);
}
}
在上述代码中:
IndexedStack
用于在底部导航栏选项之间切换页面。FloatingActionButton
用于添加浮动操作按钮(例如添加功能)。FloatingBottomBar
用于创建底部浮动导航栏,每个导航项都包含图标和标题。onTabSelected
回调函数用于处理导航项的选择事件,并更新当前显示的页面。
运行你的Flutter项目,你应该能够看到一个带有底部浮动导航栏的应用,点击不同的导航项可以切换不同的页面。