Flutter自定义TabBar插件polar_tab_bar的使用
Flutter 自定义 TabBar 插件 polar_tab_bar 的使用
Polar Tab Bar 是一个可定制且带有内置 PageView 的圆角标签栏,可以保存用户界面状态。
Polar Tab Bar 有两种类型:Pill 和 Step。
Pill (PolarTabType.Pill) |
Step (PolarTabType.Step) |
|---|---|
![]() |
![]() |
开始使用
在 pubspec.yaml 文件中添加 polar_tab_bar 依赖:
dependencies:
...
polar_tab_bar: ^0.0.2
基本用法
首先创建标签项:
final List<PolarTabItem> tabs = [
PolarTabItem(
index: 0,
title: "Home",
page: const PolarTabPage(
child: HomePage(),
),
),
PolarTabItem(
index: 1,
title: "Category",
page: const PolarTabPage(child: CategoryPage()),
),
PolarTabItem(
index: 2,
title: "Profile",
page: const PolarTabPage(child: ProfilePage()),
),
];
注意:请将子部件包装在 PolarTabPage 中以在每个导航时保存用户界面状态。
然后可以在你的部件中使用 PolarTabBar:
Scaffold(
appBar: AppBar(
elevation: 0,
backgroundColor: Colors.indigoAccent,
title: const Text(
"Polar Tabbar",
style: TextStyle(
color: Colors.white,
fontSize: 16,
),
),
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(16),
child: PolarTabBar(
type: PolarTabType.pill, // 默认类型
tabs: tabs
),
),
),
)
定制化
type(默认:PolarTabType.pill) - 标签栏的类型。pageController(可选) - 如果你需要完全控制内部的PageView。height(可选) - 如果你将PolarTabBar放置在滚动父部件(如ListView、SingleChildScrollView等)中,则需要指定高度。contentSpacing- 每个标签项之间的间距。innerPadding- 标签项内边距。radius- 标签项的圆角半径。background(可选) - 未激活标签项的背景颜色。activeBackground(可选) - 激活标签项的背景颜色。titleStyle(可选) - 未激活标签项的文本样式。activeTitleStyle(可选) - 激活标签项的文本样式。isDense- 使标签更紧凑。curve- 动画曲线。duration(默认:300ms) - 动画持续时间。swipable(默认:true) - 使PageView可滑动。
示例代码
以下是一个完整的示例代码,展示了如何使用 PolarTabBar 插件:
import 'package:example/pages/category_page.dart';
import 'package:example/pages/home_page.dart';
import 'package:example/pages/profile_page.dart';
import 'package:flutter/material.dart';
import 'package:polar_tab_bar/models/polar_tab_item.dart';
import 'package:polar_tab_bar/polar_tab_bar.dart';
import 'package:polar_tab_bar/widgets/polar_tab_page.dart';
void main() {
runApp(const PolarTabBarApp());
}
class PolarTabBarApp extends StatelessWidget {
const PolarTabBarApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
final List<PolarTabItem> tabs = [
PolarTabItem(
index: 0,
title: "Home",
page: const PolarTabPage(
child: HomePage(),
),
),
PolarTabItem(
index: 1,
title: "Category",
page: const PolarTabPage(child: CategoryPage()),
),
PolarTabItem(
index: 2,
title: "Profile",
page: const PolarTabPage(child: ProfilePage()),
),
];
return MaterialApp(
home: Scaffold(
appBar: AppBar(
elevation: 0,
backgroundColor: Colors.indigoAccent,
title: const Text(
"Polar Tabbar",
style: TextStyle(
color: Colors.white,
fontSize: 16,
),
),
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(16),
child: PolarTabBar(
tabs: tabs,
),
),
),
),
);
}
}
更多关于Flutter自定义TabBar插件polar_tab_bar的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter自定义TabBar插件polar_tab_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用polar_tab_bar插件的示例代码。polar_tab_bar是一个自定义TabBar插件,可以为你提供更灵活和美观的Tab切换效果。
首先,确保你已经在pubspec.yaml文件中添加了polar_tab_bar依赖:
dependencies:
flutter:
sdk: flutter
polar_tab_bar: ^最新版本号 # 请替换为最新版本号
然后运行flutter pub get来安装依赖。
接下来,在你的Flutter项目中使用PolarTabBar和PolarTabBarView。以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:polar_tab_bar/polar_tab_bar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'PolarTabBar Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
late TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(length: 3, vsync: this);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('PolarTabBar Demo'),
bottom: PreferredSize(
preferredSize: Size.fromHeight(kToolbarHeight),
child: PolarTabBar(
controller: _tabController,
tabs: [
PolarTab(
icon: Icon(Icons.home),
text: 'Home',
),
PolarTab(
icon: Icon(Icons.star),
text: 'Favorites',
),
PolarTab(
icon: Icon(Icons.settings),
text: 'Settings',
),
],
indicator: PolarTabBarIndicator(
color: Colors.blue,
height: 4.0,
borderRadius: BorderRadius.circular(8.0),
),
labelStyle: TextStyle(fontSize: 14),
unselectedLabelStyle: TextStyle(fontSize: 14, color: Colors.grey),
),
),
),
body: PolarTabBarView(
controller: _tabController,
children: [
Center(child: Text('Home Tab')),
Center(child: Text('Favorites Tab')),
Center(child: Text('Settings Tab')),
],
),
);
}
}
代码解释:
- 依赖引入:确保在
pubspec.yaml中添加了polar_tab_bar依赖。 - 状态管理:在
_MyHomePageState中使用TabController来管理Tab的状态。 - PolarTabBar:在
AppBar的bottom属性中使用PolarTabBar。可以自定义每个Tab的图标和文本。 - PolarTabBarIndicator:自定义TabBar的指示器样式,包括颜色、高度和圆角。
- PolarTabBarView:与
PolarTabBar配合使用的视图部分,根据当前选中的Tab显示不同的内容。
这样,你就可以在你的Flutter应用中使用polar_tab_bar来实现自定义的Tab切换效果了。根据实际需求,你可以进一步自定义Tab的样式和行为。



