前言
Flutter 是 Google 开源的应用开发框架,仅通过一套代码就能构建支持Android、iOS、Windows、Linux等多平台的应用。Flutter的性能非常高,拥有120fps的刷新率,也是目前非常流行的跨平台UI开发框架。
本专栏为大家收集了Github上近70个优秀开源库,后续也将持续更新。希望可以帮助大家提升搬砖效率,同时祝愿Flutter的生态越来越完善🎉🎉。
Getwidget 索引
第一篇:按钮 GFButton、角标 GFBadge、头像 GFAvatar、图片 GFImage、卡片 GFCard
第二篇:轮播图 GFCarousel、列表模版 GFListTile、标签栏 GFTabBar、浮动组件 GFFloatingWidget
第三篇:提示框 GFToast、开关 GFToggle、文字排版 GFTypography、抽屉 GFDrawer、弹窗 GFAlert、折叠卡片 GFAccordion
👉 第四篇:导航条 GFAppBar、搜索栏 GFSearchBar、评分组件 GFRating、加载提示 GFLoader、进度条 GFProgressBar
第五篇:闪光组件 GFShimmer、动画 GFAnimation、边框 GFBorder、底部抽屉 GFBottomSheet、复选框 GFCheckbox
第六篇:可选列表模板 GFCheckboxListTile、下拉选择框 GFMultiSelect、介绍屏GFIntroScreen、单选按钮 GFRadio、粘性标题 GFStickyHeader
正文
一、🚀 轮子介绍
- 名称:getwidget
- 概述:GetWidget完全免费,内置了1000多个预构建的小组件,您可以使用这些小组件加快自己开发进程并构建出色的应用。
- 出版商:navin10sharma@gmail.com
- 仓库地址:getwidget
- 推荐指数: ⭐️⭐️⭐️⭐️⭐️
- 常用指数: ⭐️⭐️⭐️⭐️⭐️
- 预览: 长图预览请戳
二、⚙️ 安装及使用
dependencies:
getwidget: ^2.0.5
import 'package:getwidget/getwidget.dart';
三、🗂 组件示例
16. 导航条 GFAppBar
属性及含义介绍
属性 | 描述 |
---|---|
leading | 导航栏左侧组件 |
automaticallyImplyLeading | 导航栏左侧默认组件,leading 为null 时生效 |
title | 导航栏标题组件 |
actions | 导航栏右侧组件数组 |
flexibleSpace | 导航栏后方组件 |
bottom | 导航栏底部组件,类型是PreferredSizeWidget ,通常为Tabbar |
elevation | 导航栏相对其父组件的高度,影响了阴影效果 |
shape | 导航栏及阴影形状 |
backgroundColor | 导航栏背景颜色 |
brightness | 导航栏亮度,通常与backgroundColor 、iconTheme 、textTheme 一起设置 |
iconTheme | 导航栏图标的颜色、大小及透明度 |
actionsIconTheme | 导航栏右侧图标的颜色、大小及透明度,若不设置则与iconTheme 保持一致 |
textTheme | 导航栏标题的文字样式 |
primary | 是否填充状态栏高度,flexibleSpace 不受此属性的影响,默认true |
centerTitle | 标题栏是否居中显示 |
titleSpacing | 导航栏子组件的间隔 |
toolbarOpacity | 导航栏子组件的透明度 |
bottomOpacity | 导航栏底部组件(bottom )的子组件透明度 |
searchBar | 是否显示搜索栏,当title 为null 时生效,默认false |
searchHintText | 搜索栏提示文字 |
searchHintStyle | 搜索栏提示文字风格 |
searchBarColorTheme | 搜索栏主题颜色,影响的是边框、搜索按钮、关闭按钮、光标等 |
searchController | 输入框控制器,类型为TextEditingController |
onTap | 输入框单击回调 |
onChanged | 输入框内容变化回调 |
onSubmitted | 输入完成回调 |
1.GFAppbar
与AppBar
的属性基本一致,这是一个搭配GFIconBadge
的简单示例⬇️:
GFAppBar(
backgroundColor: GFColors.DARK,
title: Text(
'我的主页',
style: appBarTitleStyle,
),
centerTitle: false,
leading: Icon(
Icons.arrow_back_ios,
color: GFColors.LIGHT,
size: 18,
),
titleSpacing: 0,
actions: [
Padding(
padding: EdgeInsets.only(right: 16),
child: GFIconBadge(
position: GFBadgePosition.topEnd(top: 5, end: -5),
child: GFAvatar(
radius: 20,
backgroundImage: AssetImage('images/mypicture.png'),
),
counterChild: GFBadge(
text: '6',
size: 22,
shape: GFBadgeShape.circle,
))),
],
),
static const TextStyle appBarTitleStyle = TextStyle(
fontWeight: FontWeight.w500,
fontSize: 16,
letterSpacing: 0.2,
color: GFColors.LIGHT,
);
2. Bottom
为导航栏底部组件,注意类型为PreferredSizeWidget
,可以通过使用PreferredSize
来包裹原组件来使用,PreferredSize
的preferredSize
在这里的属性代表了其底边距离原GFAppBar底边的距离。
PreferredSize(
child: GFTabBar(
tabBarColor: GFColors.DARK,
tabBarHeight: 40,
indicatorColor: GFColors.LIGHT,
length: 3,
controller: tabController,
tabs: [
Tab(
child: const Text(
'动态',
),
),
Tab(
child: const Text(
'文章',
),
),
Tab(
child: const Text(
'专栏',
),
),
],
),
preferredSize: Size(double.infinity, 40)
);
3.GFAppbar
自带搜索功能,searchBar还提供了监听输入框的三种回调方法,示例如下:
GFAppBar(
backgroundColor: GFColors.DARK,
title: Text(
'我的主页',
style: appBarTitleStyle,
),
centerTitle: false,
leading: Icon(
Icons.arrow_back_ios,
color: GFColors.LIGHT,
size: 18,
),
titleSpacing: 0,
actions: [
Padding(
padding: EdgeInsets.only(right: 16),
child: GFIconBadge(
position: GFBadgePosition.topEnd(top: 5, end: -5),
child: GFAvatar(
radius: 20,
backgroundImage: AssetImage('images/mypicture.png'),
),
counterChild: GFBadge(
text: '6',
size: 22,
shape: GFBadgeShape.circle,
))),
],
searchBar: true,
searchHintText: '搜索你感兴趣的文章',
onTap: () {
// 输入框单机回调
},
onChanged: (value) {
// 输入框内容变化回调
},
onSubmitted: (value) {
// 提交回调
},
),
17.搜索栏 GFSearchBarPage
属性及含义介绍
属性 | 描述 |
---|---|
searchList | 数据源数组(必须) |
overlaySearchListItemBuilder | 搜索列表item样式(必须) |
searchQueryBuilder | 根据输入返回相应逻辑的数据列表) |
controller | 控制器,监听输入 |
onItemSelected | 搜索结果点击回调 |
hideSearchBoxWhenItemSelected | 点击搜索结果是否隐藏搜索栏 |
overlaySearchListHeight | 搜索结果列表高度(此高度应为动态值,根据初始数据与搜索结果变化而改变) |
noItemsFoundWidget | 无对应搜索结果时搜索列表显示的组件 |
searchBoxInputDecoration | 搜索框样式 |
下方示例中为包含输入字符串的所有item(区分大小写)⬇️:
List list = [
"Flutter",
"React",
"Ionic",
"Xamarin",
];
GFSearchBar(
searchList: list,
overlaySearchListItemBuilder: (item) {
return GFListTile(titleText: item.toString());
},
searchQueryBuilder: (query, list) {
return list
.where((element) => element.toString().contains(query))
.toList();
},
),
18.评分组件 GFRating
属性及含义介绍
属性 | 描述 |
---|---|
value | 分值,double类型 |
onChanged | 分值变化回调 |
itemCount | GFRating子组件数量,默认5 |
spacing | GFRating子组件间隔 |
defaultIcon | 默认icon |
color | 选中部分icon颜色 |
borderColor | 未选中icon颜色 |
size | icon尺寸 |
filledIcon | 完整选中icon样式 |
halfFilledIcon | 选中一半的icon样式 |
allowHalfRating | 是否可以通过拖动获取半数的分值,默认true |
showTextForm | 是否显示分数输入框 |
suffixIcon | 评分输入框右侧组件 |
controller | 输入框控制器 |
inputDecorations | 输入框样式 |
margin | 输入框外边距 |
padding | 输入框内边距 |
这是一个可以通过点击、拖动、打分的评分组件,使用示例:
GFRating(
value: _rating,
onChanged: (value) {
setState(() {
_rating = value;
});
},
),
19.加载动画组件 GFLoader
属性及含义介绍
属性 | 描述 |
---|---|
type | 样式 |
loaderColorOne | 仅适用于圆点和方形样式,第1个圆点(矩形)的颜色 |
loaderColorTwo | 仅适用于圆点和方形样式,第2个圆点(矩形)的颜色 |
loaderColorThree | 仅适用于圆点和方形样式,第3个圆点(矩形)的颜色 |
duration | 仅适用于圆点和方形样式的动画持续时间 |
loaderIconOne | 仅适用于自定义样式,将图标、文本或图片用作第1个点 |
loaderIconTwo | 仅适用于自定义样式,将图标、文本或图片用作第2个点 |
loaderIconThree | 仅适用于自定义样式,将图标、文本或图片用作第3个点 |
androidLoaderColor | Android加载器的动画类型 |
loaderstrokeWidth | Android加载器线条宽度 |
size | 加载器尺寸 |
child | 仅适用于自定义样式,优先级高于loaderIconOne 等的子组件 |
1.默认样式(Android风格)⬇️:
GFLoader()
2.iOS风格:
GFLoader(
type: GFLoaderType.ios
)
3.圆形:
GFLoader(
type: GFLoaderType.circle
)
4.方形:
GFLoader(
type: GFLoaderType.square
)
5.自定义样式,示例这里是一张本地的gif图片:
GFLoader(
type: GFLoaderType.custom,
child: Image(
image: AssetImage('images/red_progress.gif'),
),
)
20.进度条 GFProgressBar
属性及含义介绍
属性 | 描述 |
---|---|
type | 进度条样式 |
progressHeadType | 进度条初始(结束)位置样式,圆形GFProgressHeadType.circular 或方形GFProgressHeadType.square |
percentage | 进度百分比 |
backgroundColor | 进度条底色 |
progressBarColor | 已加载部分颜色 |
margin | 外边距 |
circleWidth | double 类型,定义圆形进度条的圆弧厚度 |
circleStartAngle | 圆形进度条初始位置,从上方顶点算起的角度,默认0(上方顶点) |
radius | 圆形进度条尺寸 |
linearGradient | progressBarColor 为null 时生效,进度条渐变色 |
animation | 是否显示进度条变化时的动画 |
animationDuration | 动画时长,animation 为true 时生效 |
child | 子组件,通常显示百分比 |
autoLive | 设置为false 表示不保留小部件的状态,默认true |
animateFromLastPercentage | 设置为true 表示根据设置的最后一个百分比值设置进度条动画,默认false |
reverse | 显示反向进度,默认false |
mask | 创建一个遮罩 |
lineHeight | 进度条线条宽度 |
width | 进度条总长度,样式不能为圆形 |
fromRightToLeft | 设置为true 表示为从右到左的进度条 |
leading | 进度条左侧组件,仅适用于条形进度条 |
trailing | 进度条右侧组件,仅适用于条形进度条 |
padding | 内边距 |
alignment | 对齐方式 |
clipLinearGradient | 设置为true 则只显示linearGradient 已加载的部分 |
1.圆形基础样式示例⬇️:
GFProgressBar(
percentage: 0.9,
width: 100,
radius: 90,
type: GFProgressType.circular,
backgroundColor: Colors.black26,
progressBarColor: GFColors.DANGER,
)
2.带有前后图标的进度条示例:
GFProgressBar(
percentage: 0.8,
lineHeight: 20,
alignment: MainAxisAlignment.spaceBetween,
child: const Text(
'80%',
textAlign: TextAlign.end,
style: TextStyle(fontSize: 16, color: Colors.white),
),
leading: Icon(
Icons.sentiment_dissatisfied,
color: GFColors.DANGER
),
trailing:Icon(
Icons.sentiment_satisfied,
color: GFColors.SUCCESS
),
backgroundColor: Colors.black26,
progressBarColor: GFColors.INFO,
)