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的样式和行为。