Flutter自定义标签页插件fancy_tab的使用
Flutter自定义标签页插件fancy_tab的使用
Fancy Tab 插件简介
它是一个精美且美观的标签栏设计。它可以高度定制,并且易于与 PageView.builder
配合使用。
安装
在 pubspec.yaml
文件中添加以下依赖:
dependencies:
fancy_tab: ^0.0.4
导入
在 Dart 文件中导入插件:
import 'package:fancy_tab/fancy_tab.dart';
支持平台
平台 | Android | iOS | Web | Windows | macOS | Linux |
---|---|---|---|---|---|---|
支持状态 | ✅️ | ✅️ | ✅️ | ✅️ | ✅️ | ✅️ |
如何使用
可用参数
以下是 FancyTab
的构造函数及其参数说明:
FancyTab({
Key? key,
required this.selected,
required this.labelsList,
required this.length,
this.onTap,
this.textDirection = TextDirection.ltr,
this.selectedColor = const Color(0xFF2196F3),
this.unSelectedColor = const Color(0xA69E9E9E),
this.selectedTextColor = const Color(0xFFFFFFFF),
this.unSelectedTextColor = const Color(0xFF7A7A7A),
this.borderColor = const Color(0xFF000000),
this.separator = 5,
this.tabBarHeight = 50,
});
参数表
参数名称 | 数据类型 | 默认值 |
---|---|---|
selected | int | null |
labelsList | List | null |
length | int | null |
onTap | void Function?(int)? | null |
textDirection | TextDirection? | TextDirection.ltr |
selectedColor | Color? | Color(0xFF2196F3) |
unSelectedColor | Color? | Color(0xA69E9E9E) |
selectedTextColor | Color? | Color(0xFFFFFFFF) |
unSelectedTextColor | Color? | Color(0xFF7A7A7A) |
borderColor | Color? | Color(0xFF000000) |
separator | double? | 5.0 |
tabBarHeight | double? | 50.0 |
示例代码
以下是一个完整的示例代码,展示如何使用 fancy_tab
插件创建一个带有动态背景色的标签页:
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:fancy_tab/fancy_tab.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int selected = 0; // 当前选中的标签页索引
List<String> labelsList = ['测试 1', '测试 2', '测试 3']; // 标签页文本
Color? backgroundColor; // 动态背景颜色
PageController? pageController = PageController(); // 页面控制器
[@override](/user/override)
void initState() {
super.initState();
randomColorGenerator(); // 初始化随机背景色
}
// 随机生成背景颜色
randomColorGenerator() {
setState(() {
backgroundColor = Color((Random().nextDouble() * 0xFFFFFF).toInt())
.withOpacity(1.0);
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
elevation: 0,
title: const Text('Fancy Tab 示例'),
),
body: Container(
color: backgroundColor, // 设置动态背景色
child: Column(
children: [
Center(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 10),
child: FancyTab(
selected: selected, // 当前选中的标签页索引
labelsList: labelsList, // 标签页文本列表
length: labelsList.length, // 标签页数量
selectedColor: Colors.orange, // 选中标签的颜色
unSelectedColor: Colors.deepOrangeAccent, // 未选中标签的颜色
onTap: (val) { // 点击标签页回调
setState(() {
selected = val; // 更新当前选中的标签页索引
pageController!.jumpToPage(val); // 跳转到对应的页面
randomColorGenerator(); // 更新背景颜色
});
},
),
),
),
Expanded(
child: PageView.builder(
onPageChanged: (val) { // 页面切换时更新选中标签
setState(() {
selected = val;
randomColorGenerator();
});
},
controller: pageController, // 页面控制器
itemCount: labelsList.length, // 页面数量
itemBuilder: (context, index) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Center(
child: Container(
padding: const EdgeInsets.all(10),
child: Text(
labelsList[index].toUpperCase(), // 显示大写的标签文本
style: Theme.of(context).textTheme.headline2,
),
),
),
],
);
},
),
),
],
),
),
),
);
}
}
更多关于Flutter自定义标签页插件fancy_tab的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter自定义标签页插件fancy_tab的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
fancy_tab
是一个用于 Flutter 的自定义标签页插件,它允许开发者创建具有丰富动画效果和自定义样式的标签页。以下是如何使用 fancy_tab
插件的详细步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 fancy_tab
插件的依赖。
dependencies:
flutter:
sdk: flutter
fancy_tab: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入包
在你的 Dart 文件中导入 fancy_tab
包。
import 'package:fancy_tab/fancy_tab.dart';
3. 使用 FancyTab
组件
FancyTab
组件允许你创建带有动画效果的标签页。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:fancy_tab/fancy_tab.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: FancyTabExample(),
);
}
}
class FancyTabExample extends StatefulWidget {
@override
_FancyTabExampleState createState() => _FancyTabExampleState();
}
class _FancyTabExampleState extends State<FancyTabExample> {
int _currentIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Fancy Tab Example'),
),
body: FancyTab(
currentIndex: _currentIndex,
onTabChanged: (index) {
setState(() {
_currentIndex = index;
});
},
tabs: [
FancyTabItem(
icon: Icons.home,
title: 'Home',
),
FancyTabItem(
icon: Icons.business,
title: 'Business',
),
FancyTabItem(
icon: Icons.school,
title: 'School',
),
],
pages: [
Center(child: Text('Home Page')),
Center(child: Text('Business Page')),
Center(child: Text('School Page')),
],
),
);
}
}
4. 自定义 FancyTab
FancyTab
提供了多种自定义选项,例如:
indicatorColor
: 设置指示器的颜色。indicatorHeight
: 设置指示器的高度。tabBackgroundColor
: 设置标签的背景颜色。activeTabColor
: 设置活动标签的颜色。inactiveTabColor
: 设置非活动标签的颜色。tabPadding
: 设置标签的内边距。tabMargin
: 设置标签的外边距。
FancyTab(
currentIndex: _currentIndex,
onTabChanged: (index) {
setState(() {
_currentIndex = index;
});
},
tabs: [
FancyTabItem(
icon: Icons.home,
title: 'Home',
),
FancyTabItem(
icon: Icons.business,
title: 'Business',
),
FancyTabItem(
icon: Icons.school,
title: 'School',
),
],
pages: [
Center(child: Text('Home Page')),
Center(child: Text('Business Page')),
Center(child: Text('School Page')),
],
indicatorColor: Colors.blue,
indicatorHeight: 4.0,
tabBackgroundColor: Colors.white,
activeTabColor: Colors.blue,
inactiveTabColor: Colors.grey,
tabPadding: EdgeInsets.all(10.0),
tabMargin: EdgeInsets.symmetric(horizontal: 5.0),
);