Flutter底部导航栏带指示器插件bottom_bar_with_indicator的使用
Flutter底部导航栏带指示器插件bottom_bar_with_indicator的使用
Bottom Bar With Indicator
一个带有顶部指示器的底部导航面板。
点击这里查看完整的示例。
安装
在 pubspec.yaml
文件中添加依赖:
dependencies:
bottom_bar_with_indicator: ^0.0.2
从命令行安装包:
flutter pub get
使用
你可以这样使用它:
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: '自定义底部导航栏',
home: Scaffold(
bottomNavigationBar: BottomBarWithIndicator(
selectedIndex: _selectedIndex,
onIndexChanged: (index) {
setState(() => _selectedIndex = index);
},
themeData: BarWithIndicatorThemeData(
backgroundColor: const Color(0xFFF6F6F6),
activeColor: const Color(0xFF3C5FE6),
inactiveColor: const Color(0xFFB1B8C2),
floating: true,
),
items: const [
BottomBarWithIndicatorItem(icon: Icons.delete, label: '项目 1'),
BottomBarWithIndicatorItem(icon: Icons.delete, label: '项目 2'),
BottomBarWithIndicatorItem(icon: Icons.delete, label: '项目 3'),
],
),
),
);
}
结果
自定义
你可以根据喜好自定义该组件。有一个帮助类 BarWithIndicatorThemeData
可以用于此目的。
参数 | 描述 |
---|---|
backgroundColor | 导航栏的背景颜色 |
activeColor | 选中项的颜色 |
inactiveColor | 未选中项的颜色 |
floating | 确定导航栏是否具有浮动外观。当设置为 true 时,导航栏将与父组件边框保持一定间距,并且有略微圆角。当设置为 false 时,将使用默认的导航栏模型。 |
cornerRadius | 导航栏的圆角半径 |
barMargin | 导航栏与父组件边缘之间的间距 |
完整示例代码
import 'package:bottom_bar_with_indicator/bottom_bar_with_indicator.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const App());
}
class App extends StatefulWidget {
const App({super.key});
[@override](/user/override)
State<App> createState() => _AppState();
}
class _AppState extends State<App> {
var _selectedIndex = 0;
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: '自定义底部导航栏',
home: Scaffold(
bottomNavigationBar: BottomBarWithIndicator(
selectedIndex: _selectedIndex,
onIndexChanged: (index) {
setState(() => _selectedIndex = index);
},
themeData: BarWithIndicatorThemeData(
backgroundColor: const Color(0xFFF6F6F6),
activeColor: const Color(0xFF3C5FE6),
inactiveColor: const Color(0xFFB1B8C2),
floating: true,
),
items: const [
BottomBarWithIndicatorItem(icon: Icons.delete, label: '项目 1'),
BottomBarWithIndicatorItem(icon: Icons.delete, label: '项目 2'),
BottomBarWithIndicatorItem(icon: Icons.delete, label: '项目 3'),
],
),
),
);
}
}
更多关于Flutter底部导航栏带指示器插件bottom_bar_with_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter底部导航栏带指示器插件bottom_bar_with_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用bottom_bar_with_indicator
插件来实现带有指示器的底部导航栏的示例代码。
首先,确保你已经在pubspec.yaml
文件中添加了bottom_bar_with_indicator
依赖:
dependencies:
flutter:
sdk: flutter
bottom_bar_with_indicator: ^最新版本号 # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下方式使用BottomBarWithIndicator
:
import 'package:flutter/material.dart';
import 'package:bottom_bar_with_indicator/bottom_bar_with_indicator.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: BottomBarNavigator(),
),
);
}
}
class BottomBarNavigator extends StatefulWidget {
@override
_BottomBarNavigatorState createState() => _BottomBarNavigatorState();
}
class _BottomBarNavigatorState extends State<BottomBarNavigator> {
int currentIndex = 0;
final List<String> pages = [
'Home',
'Search',
'Profile',
'Settings',
];
final List<IconData> icons = [
Icons.home,
Icons.search,
Icons.person,
Icons.settings,
];
void onTabTapped(int index) {
setState(() {
currentIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Stack(
children: [
// Your page content goes here, you can use IndexedStack or Offstage to switch between pages
IndexedStack(
index: currentIndex,
children: pages.map((String title) => Center(child: Text(title))).toList(),
),
// Bottom navigation bar with indicator
BottomBarWithIndicator(
currentIndex: currentIndex,
onItemTap: (index) => onTabTapped(index),
items: List.generate(
pages.length,
(index) => BottomBarItem(
icon: Icon(icons[index]),
title: Text(pages[index]),
),
),
),
],
);
}
}
在这个示例中:
BottomBarNavigator
是一个有状态的Widget,用于管理当前选中的索引。pages
和icons
列表分别存储了每个导航项的标题和图标。onTabTapped
方法用于更新当前选中的索引。IndexedStack
用于根据当前索引显示相应的页面内容。你也可以使用Offstage
组件来替代IndexedStack
,根据你的具体需求选择最佳实践。BottomBarWithIndicator
组件被添加到页面的底部,它接收当前索引、点击事件和导航项列表作为参数。
这个示例展示了如何使用bottom_bar_with_indicator
插件创建一个带有指示器的底部导航栏,并根据用户的选择切换不同的页面内容。