Flutter实用工具集插件yx_fltools的使用
Flutter实用工具集插件yx_fltools的使用
目录介绍
- 01.事件通知bus工具类
- 02.颜色Color工具类
- 03.日期转化工具类
- 04.File文件工具类
- 05.Sql数据库工具类
- 06.Json转化工具类
- 07.Log日志打印工具类
- 08.屏幕参数工具类
- 09.Sp轻量存储工具类
- 10.辅助计算工具类
- 11.加密和解密工具类
- 12.Num格式处理工具类
- 13.设备参数获取工具类
- 14.图片处理工具类
- 15.网络处理工具类
- 16.常用正则工具类
- 17.Object常用工具类
- 18.验证相关工具类
- 19.路由管理工具类
- 20.Bus事件工具类
- 21.Text文本工具类
- 22.i18拓展工具类
- 23.Time时间工具类
- 24.SPI帮助工具类
- 25.计时器辅助工具类
- 26.常见拓展工具类
- 27.内存缓存工具类
- 28.清除操作工具类
- 29.编解码相关工具类
- 30.反射相关工具类
- 31.资源相关工具类
- 32.Snackbar工具类
- 33.转化相关工具类
- 34.全局异常捕获工具
- 35.解析数据工具类
- 36.字节转化工具类
- 40.其他相关工具类
00.该库说明
00.1 该库工具类汇总
工具类 | 功能说明 |
---|---|
EventBusService | bus事件通知工具类,实现了订阅者模式。用于组件之间通信。 |
CalculateUtils | 计算文本的宽,高。 |
ColorUtils | 主要是将RGB/ARGB转化为16进制字符串颜色或者Color。 |
DateFormats | 常见中文,英文的日期时间转化的格式。包含绝大多数的日期格式。 |
DateUtils | 日期工具类,获取日期时间,各种时间之间的转换操作。 |
EncryptUtils | 加解密工具类,主要是md5加密,base64加密和解密,异或加解密等。 |
ExtensionXxx | 拓展类,包含int,list,map,set,num,string等拓展类,有大多数常见操作方法。 |
TransformUtils | 转化工具类,包含int,string转化二进制,字母大小写转化等等。 |
ValidatorUtils | 校验工具类,包含常见类型,图片,url,邮箱,电话,资源文件,驼峰命名等校验。 |
FileUtils | 文件缓存类,主要是存储和获取字符串,Map,Json等数据,写到本地file文件。 |
AppLocalizations | i18相关,可以设置locale,获取语言中字符串。 |
JsonUtils | json转化工具类,主要是负责list,map,对象和json之间转化等。 |
LogUtils | 日志工具类,设置日志开关,长度,以及可以过滤标签,打印5种类型日志。 |
NumUtils | Num格式工具类,主要是负责num相关处理和转化操作。 |
ObjectUtils | Object超类工具类,负责各种对象判断,获取长度等操作。 |
RegexUtils | 正则表达式工具类,主要是电话,身份证,邮箱,ip,网络等校验。 |
ScreenUtils | 屏幕工具类,获取屏幕的宽高,以及像素密度比等。 |
SpUtils | sp存储工具类,适合存储轻量级数据,不建议存储json长字符串。 |
TextUtils | 文本工具类,主要处理字符串缩略,*,比较,移除等操作。 |
TimerUtils | 倒计时器工具类,设置倒计时总时间,间隔时间,开始暂停等。 |
UrlUtils | url工具类,获取url的host,参数,校验等操作。 |
SystemUtils | 系统工具类,复制内容到剪切板,弹出和关闭软键盘,清除数据等。 |
OtherUtils | RandomUtils随机工具类,SnackUtils,PlatformUtils平台工具类。 |
00.2 如何使用该库
具体文档可以查看demo。
01.事件通知bus工具类
事件总线
通常实现了订阅者模式,订阅者模式包含发布者和订阅者两种角色。
第一种方式:使用map集合存储key为事件eventName,value为EventCallback实现bus
// 注册监听bus
_subscription = EventBusService.instance.eventBus.on<EventMessage>().listen((event) {
String name = event.eventName;
// 前后台切换发生了变化
if (name == "eventBus1") {
var busMessage = event.arguments["busMessage"];
setState(() {
message1 = busMessage;
});
}
});
// 发送消息
EventBusService.instance.eventBus.fire(EventMessage(
"eventBus1",
arguments: {"busMessage": "发送bus消息1"},
));
// 页面销毁清除bus
if (_subscription != null) {
_subscription.cancel();
_subscription = null;
}
第二种方式:使用StreamController实现bus事件通知
// 注册监听消息
bus.on("eventBus2", (arg) {
var busMessage = arg;
setState(() {
message2 = "接收消息:" + busMessage;
});
});
// 发送消息
var arg = "发送bus消息1";
bus.emit("eventBus2", arg);
// 移除消息
bus.off("eventBus2", (arg) {
});
02.颜色Color工具类
颜色Color工具类
主要是将RGB或者ARGB颜色转化为Color对象,16进制颜色字符串等等。
hexToColor : 将#A357D6颜色转化为16进制的Color
toColor : 将#FF6325颜色或者#50A357D6转化为16进制的Color
colorString : 将color颜色转变为字符串
colorString : 检查字符串是否为十六进制
03.日期转化工具类
日期转化工具类
主要是获取当前日期,按指定格式格式化时间,以及多种格式化日期工具方法。
getNowDateTime : 获取当前日期返回DateTime
getYesterday : 获取昨天日期返回DateTime
getNowUtcDateTime : 获取当前日期返回DateTime(utc)
getNowDateTimeFormat : 获取当前日期,返回指定格式
getUtcDateTimeFormat : 获取当前日期,返回指定格式
isYesterday : 根据时间判断是否是昨天
getNowDateMs : 将#获取当前毫秒值,返回int
getNowDateString : 获取现在日期字符串,默认是:yyyy-MM-dd HH:mm:ss,返回字符串
formatDate : 格式化时间,第一个字段是dateTime,第二个可选项表示格式
formatDateString : 格式化日期字符串,第一个字段例如:'2021-07-18 16:03:10',第二个字段例如:"yyyy/M/d HH:mm:ss"
formatDateMilliseconds : 格式化日期毫秒时间,第一个字段例如:1213423143312,第二个字段例如:"yyyy/M/d HH:mm:ss"
getWeekday : 获取dateTime是星期几
getWeekdayByMilliseconds : 获取毫秒值对应是星期几
isToday : 根据时间戳判断是否是今天
isYesterday : 根据时间判断是否是昨天
04.File文件工具类
4.1 文件存储工具类
主要是存储和获取String,Json等文件,这个是存储到file本地文件。
getTempDir : 获取一个临时目录(缓存),系统可以随时清除
getAppDocDir : 获取应用程序的目录,用于存储只有它可以访问的文件。只有当应用程序被删除时,系统才会清除目录。
getAppFile : 初始化文件路径,默认选中应用程序的目录
readStringDir : 获取存在文件中的数据,默认读到应用程序的目录
writeJsonFileDir : 写入json文件,默认写到应用程序的目录
writeStringDir : 利用文件存储字符串,默认写到应用程序的目录
clearFileDataDir : 清除缓存数据
deleteFileDataDir : 删除缓存文件
writeJsonCustomFile : 写入json文件,自定义路径
writeStringFile : 利用文件存储字符串,自定义路径
readStringCustomFile : 获取自定义路径文件存中的数据
4.2 文件管理工具类
主要是创建不同的目录路径,创建文件,或者目录路径等操作。
getTempPath : 获取设备上临时目录的路径,该目录没有备份,适合存储下载文件的缓存。
getAppDocPath : 获取应用程序的目录,用于存储只有它可以访问的文件。只有当应用程序被删除时,系统才会清除目录。
getStoragePath : 应用程序可以访问顶层存储的目录的路径
createDirSync : 异步创建文件
createDir : 同步创建文件
createTempDir : 创建临时目录
createAppDocDir : 创建获取应用程序的目录
06.Json转化工具类
Json转化工具类
json转化常见的操作,逐步完善list,map和json字符串互转等。
printJson : 单纯的Json格式输出打印
printJsonEncode : 单纯的Json格式输出打印
encodeObj : 将对象[值]转换为JSON字符串
getObj : 转换JSON字符串到对象
getObject : 转换JSON字符串或JSON映射[源]到对象
getObjList : 转换JSON字符串列表[源]到对象列表
getObjectList : 转换JSON字符串或JSON映射列表[源]到对象列表
07.Log日志打印工具类
Log日志打印工具类
五种不同类型日志,还可以添加tag标签过滤。
init : 初始化日志,自定义tag,是否是debug环境,日志最大长度,这几个字段都是非必选
d : 打印debug日志
e : 打印error日志
v : 打印v日志
i : 打印info日志
w : 打印ware警告日志
08.屏幕参数工具类
屏幕参数工具类
获取屏幕的宽,高,像素密度,状态栏等属性。后期完善适配工作……
screenWidth : 当前设备宽度 dp
screenHeight : 当前设备高度 dp
pixelRatio : 设备的像素密度
screenWidth : 当前设备宽度 px = dp * 密度
screenHeight : 当前设备高度 px = dp * 密度
statusBarHeight : 状态栏高度 dp 刘海屏会更高
bottomBarHeight : 底部安全区距离 dp
textScaleFactor : 像素的字体像素数,字体的缩放比例
09.Sp轻量存储工具类
sp轻量级存储工具
主要是sp存储和获取int,String,list,map等数据操作。
init : 初始化,必须要初始化
hasKey : 判断是否存在key的数据
putObject : 存储object类型数据
getObject : 获取sp中key的map数据
putObjectList : 存储sp中key的list集合
getObjectList : 获取sp中key的list集合
getString : 获取sp中key的字符串
putString : 存储sp中key的字符串
getBool : 获取sp中key的布尔值
putBool : 存储sp中key的布尔值
getInt : 获取sp中key的int值
putInt : 存储sp中key的int值
getDouble : 获取sp中key的double值
putDouble : 存储sp中key的double值
getStringList : 获取sp中key的list<String>值
putStringList : 存储sp中key的list<String>值
getStringMap : 获取sp中key的map值
putStringMap : 存储sp中key的map值
getDynamic : 获取sp中key的dynamic值
getKeys : 获取sp中所有的key
remove : 移除sp中key的值
clear : 清除sp
isInitialized : 检查初始化
forEach : 遍历打印sp的key和value
11.加密和解密工具类
加密和解密工具类
目前支持base64加解密,md5加密。后期逐步完善更多加密方法……
encodeMd5 : md5 加密字符串,这种是不可逆的
encodeBase64 : Base64加密字符串
decodeBase64 : Base64解密字符串
xorBase64Encode : 异或对称 Base64 加密
xorBase64Decode : 异或对称 Base64 解密
12.Num格式处理工具类
格式处理工具类
主要是处理num格式转化相关操作。
isNum : 检查字符串是int还是double
getIntByValueString : 将数字字符串转int。如果字符串不是数字,则转化为0
getDoubleByValueString : 数字字符串转double。如果字符串不是数字,则转化为0
getNumByValueString : 将数字字符串转num,数字保留x位小数
getNumByValueDouble : 浮点数字保留x位小数
addNum : 两个数相加(防止精度丢失)
subtractNum : 两个数相减(防止精度丢失)
multiplyNum : 两个数相乘(防止精度丢失)
divideNum : 两个数相除(防止精度丢失)
addDecString : 两个数相加(防止精度丢失)
subtractDecString : 两个数相减(防止精度丢失)
multiplyDecString : 两个数相乘(防止精度丢失)
divideDecString : 两个数相除(防止精度丢失)
16.常用正则工具类
常用正则表达式
借鉴AndroidUtils工具类,将java转为dart。
isMobileSimple : 简单验证手机号
isMobileExact : 精确验证手机号
isTel : 验证电话号码
isIDCard15 : 验证身份证号码 15 位
isIDCard18 : 简单验证身份证号码 18 位
isIDCard18Exact : 精确验证身份证号码 18 位
isEmail : 验证邮箱
isURL : 验证 URL
isZh : 验证汉字
isUsername : 验证用户名
isDate : 验证 yyyy-MM-dd 格式的日期校验,已考虑平闰年
isIP : 验证 IP 地址
match : 判断是否匹配正则
RegexConstants.REGEX_DOUBLE_BYTE_CHAR : 双字节
RegexConstants.REGEX_BLANK_LINE : 空行
RegexConstants.REGEX_QQ_NUM : QQ 号
RegexConstants.REGEX_CHINA_POSTAL_CODE : 邮编
RegexConstants.REGEX_INTEGER : 整数
RegexConstants.REGEX_POSITIVE_INTEGER : 正整数
RegexConstants.REGEX_NEGATIVE_INTEGER : 负整数
RegexConstants.REGEX_NOT_NEGATIVE_INTEGER: 非负整数
RegexConstants.REGEX_NOT_POSITIVE_INTEGER: 非正整数
RegexConstants.REGEX_FLOAT : 浮点数
RegexConstants.REGEX_POSITIVE_FLOAT : 正浮点数
RegexConstants.REGEX_NEGATIVE_FLOAT : 负浮点数
RegexConstants.REGEX_NOT_NEGATIVE_FLOAT : 非负浮点数
RegexConstants.REGEX_NOT_POSITIVE_FLOAT : 非正浮点数
17.Object常用工具类
Object相关工具类
isNull : 判断对象是否为null
isNullOrBlank : 检查数据是否为空或空(空或只包含空格)
isEmptyString : 判断字符串是否为空
isEmptyList : 判断集合是否为空
isEmptyMap : 判断字典是否为空
isEmpty : 判断object对象是否为空
isNotEmpty : 判断object是否不为空
compareListIsEqual : 比较两个集合是否相同
getLength : 获取object的长度
18.验证相关工具类
验证相关工具类
isNumericOnly : 检查字符串是否只包含数字
isAlphabetOnly : 检查字符串是否只包含字母。(没有空格)
isBool : 检查字符串是否为布尔值
isVector : 检查string是否为vector文件
isImage : 检查字符串是否为图像文件
isAudio : 检查字符串是否为音频文件
isVideo : 检查字符串是否为视频文件
isTxt : 检查字符串是否为txt文本文件
isDocument : 检查字符串是否为doc文件
isExcel : 检查字符串是否为excel文件
isPPT : 检查字符串是否为ppt文件
isAPK : 检查字符串是否为apk文件
isPDF : 检查字符串是否为pdf文件
isHTML : 检查字符串是否为html文件
isURL : 检查字符串是否为url文件
isEmail : 检查字符串是否为email文件
isDateTime : 检查字符串是否为时间
isMD5 : 检查字符串是否为md5
isSHA1 : 检查字符串是否为sha1
isSHA256 : 检查字符串是否为sha256
isIPv4 : 检查字符串是否为ipv4
isIPv6 : 检查字符串是否为ipv6
isPalindrome : 检查字符串是否为回文
isCaseInsensitiveContains : 检查a是否包含b(将大小写字母视为相同或解释)。
isCaseInsensitiveContainsAny : 检查a中是否包含b或b中是否包含a(将大小写字母视为相同)。
isCamelCase : 检查字符串值是否驼峰大小写
isCapitalize : 检查字符串值是否大写
21.Text文本工具类
文本相关工具类
isEmpty : 判断文本内容是否为空
isNotEmpty : 判断文本内容是否不为空
startsWith : 判断字符串是以xx开头
contains : 判断字符串中是否包含xx
abbreviate : 使用点缩写字符串
compare : 比较两个字符串是否相同
hammingDistance : 比较两个长度一样的字符串有几个字符不同
formatDigitPattern : 每隔 x位 加 pattern。比如用来格式化银行卡
formatSpace4 : 每隔4位加空格
hideNumber : 隐藏手机号中间n位,比如隐藏手机号 13667225184 为 136****5184
replace : 替换字符串中的数据
split : 按照规则切割字符串,返回数组
reverse : 反转字符串
22.i18拓展工具类
LocatizationExtensionState类中:String getString(String id)
获取不同Locales渠道语言内容。举例:使用:var name = context.getString("name");
LocatizationExtensionContext类中:String getString(String id)
获取不同Locales渠道语言内容。
如何添加不同渠道语言内容
写在 main 函数中 runApp 之前
AppLocalizations.supportedLocales = [
const Locale('en', 'US'),
const Locale('pt', 'BR'),
const Locale('ja', 'JP'),
const Locale('zh', 'CN'),
];
25.计时器辅助工具类
计时器辅助工具类
TimerUtils : 创建倒计时器
setTotalTime : 设置倒计时总时间
setInterval : 设置Timer间隔
startTimer : 启动定时Timer
updateTotalTime : 重设倒计时总时间
isActive : 判断Timer是否启动
pauseTimer : 暂停倒计时器
cancel : 取消计时器
setOnTimerTickCallback : 设置倒计时器的监听
26.常见拓展工具类
26.1 int拓展类:ExtensionInt
isPalindrome : 检查int是否为回文
isOneAKind : 检查所有数据是否具有相同的值
toBinary : 转换int值为二进制
toBinaryInt : 转换int值为二进制int
fromBinary : 转换int值为二进制字符串
26.2 List拓展类:ExtensionList
toJsonString : 将list转化为json字符串
getJsonPretty : 将list转化为json字符串,换行
valueTotal : 获取num列表的总值(int/double)
isNull : 判断对象是否为null
isNullOrBlank : 检查数据是否为空或空(空或只包含空格)
26.3 Map拓展类:ExtensionMap
toJsonString : 将map转化为json字符串
getJsonPretty : 将map转化为json字符串换行
isNull : 判断对象是否为null
isNullOrBlank : 检查数据是否为空或空(空或只包含空格)
26.4 String拓展类:ExtensionString
isNull : 判断对象是否为null
isNullOrBlank : 检查数据是否为空或空(空或只包含空格)
isNumericOnly : 检查字符串是否只包含数字
isAlphabetOnly : 检查字符串是否只包含字母。(没有空格)
isBool : 检查字符串是否为布尔值
isVector : 检查string是否为vector文件
isImage : 检查字符串是否为图像文件
isAudio : 检查字符串是否为音频文件
isVideo : 检查字符串是否为视频文件
isTxt : 检查字符串是否为txt文本文件
isDocument : 检查字符串是否为doc文件
isExcel : 检查字符串是否为excel文件
isPPT : 检查字符串是否为ppt文件
isAPK : 检查字符串是否为apk文件
isPDF : 检查字符串是否为pdf文件
isHTML : 检查字符串是否为html文件
isURL : 检查字符串是否为url文件
isEmail : 检查字符串是否为email文件
isDateTime : 检查字符串是否为时间
isMD5 : 检查字符串是否为md5
isSHA1 : 检查字符串是否为sha1
isSHA256 : 检查字符串是否为sha256
isIPv4 : 检查字符串是否为ipv4
isIPv6 : 检查字符串是否为ipv6
isPalindrome : 检查字符串是否为回文
isCaseInsensitiveContains : 检查a是否包含b(将大小写字母视为相同或解释)。
isCaseInsensitiveContainsAny : 检查a中是否包含b或b中是否包含a(将大小写字母视为相同)。
isCamelCase : 检查字符串值是否驼峰大小写
isCapitalize : 检查字符串值是否大写
26.5 Function拓展类:DebounceExtension ThrottleExtension
DebounceExtension 防抖
debounce(Duration duration)
ThrottleExtension 节流
throttle(Duration duration)
26.6 num拓展类:SizeExtension EdgeInsetsExtension BorderRaduisExtension RaduisExtension BoxConstraintsExtension
33.转化相关工具类
转化相关的操作工具类
toBinary : 转换int值为二进制,比如:15 => 1111
toBinaryInt : 转换int值为二进制
fromBinary : 转换二进制为int值
capitalize : 字符串内的每个单词都要大写
capitalizeFirst : 字符串的首字母大写,其他字母小写
removeAllWhitespace : 删除字符串内的所有空格
numericOnly : 提取字符串的数值
34.全局异常捕获工具
针对flutter全局异常捕获
可以使用:handle_exception
// 如果使用,在main方法中,如下所示:
hookCrash(() {
runApp(MainApp());
});
捕获一场打印输出:
I/flutter ( 9506): yc e — — — — — — — — — — st — — — — — — — — — — — — —
I/flutter ( 9506): yc e | handle_exception : e---->MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_
I/flutter ( 9506): yc e | preferences)
I/flutter ( 9506): yc e — — — — — — — — — — ed — — — — — — — — — ---— —
I/flutter ( 9506): yc e handle_exception : stack---->
更多关于Flutter实用工具集插件yx_fltools的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter实用工具集插件yx_fltools的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
yx_fltools
是一个 Flutter 实用工具集插件,旨在为开发者提供一系列常用的工具和功能,以简化开发流程,提高开发效率。以下是如何使用 yx_fltools
插件的一些示例和指导。
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 yx_fltools
插件的依赖:
dependencies:
flutter:
sdk: flutter
yx_fltools: ^版本号 # 替换为最新的版本号
然后运行 flutter pub get
来安装插件。
2. 导入插件
在你的 Dart 文件中导入 yx_fltools
:
import 'package:yx_fltools/yx_fltools.dart';
3. 使用工具集
yx_fltools
提供了多种实用工具,以下是一些常见的用法示例:
3.1 日期工具
// 获取当前日期时间
DateTime now = YxDateUtils.now();
// 格式化日期时间
String formattedDate = YxDateUtils.format(now, 'yyyy-MM-dd HH:mm:ss');
// 解析字符串为日期时间
DateTime parsedDate = YxDateUtils.parse('2023-10-01 12:00:00');
3.2 字符串工具
// 判断字符串是否为空
bool isEmpty = YxStringUtils.isEmpty('');
// 判断字符串是否为数字
bool isNumeric = YxStringUtils.isNumeric('123');
// 截取字符串
String subString = YxStringUtils.substring('Hello, World!', 0, 5);
3.3 网络工具
// 检查网络连接
bool isConnected = await YxNetworkUtils.isConnected();
// 获取当前网络类型
String networkType = await YxNetworkUtils.getNetworkType();
3.4 设备信息工具
// 获取设备ID
String deviceId = await YxDeviceUtils.getDeviceId();
// 获取设备型号
String deviceModel = await YxDeviceUtils.getDeviceModel();
// 获取系统版本
String systemVersion = await YxDeviceUtils.getSystemVersion();
3.5 文件工具
// 读取文件内容
String fileContent = await YxFileUtils.readFile('/path/to/file.txt');
// 写入文件内容
await YxFileUtils.writeFile('/path/to/file.txt', 'Hello, World!');
// 删除文件
await YxFileUtils.deleteFile('/path/to/file.txt');
3.6 加密工具
// MD5 加密
String md5Hash = YxEncryptUtils.md5('Hello, World!');
// Base64 编码
String base64Encoded = YxEncryptUtils.base64Encode('Hello, World!');
// Base64 解码
String base64Decoded = YxEncryptUtils.base64Decode(base64Encoded);
3.7 日志工具
// 打印日志
YxLogUtils.d('This is a debug log');
YxLogUtils.i('This is an info log');
YxLogUtils.w('This is a warning log');
YxLogUtils.e('This is an error log');