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----&gt;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----&gt;

更多关于Flutter实用工具集插件yx_fltools的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于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');
回到顶部