# FlutterUtils
#### 目录介绍
- 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,邮箱,电话,资源文件,驼峰命名等校验|
|**ExtensionXxx** | 拓展类,包含int,list,map,set,num,string等拓展类,有大多数常见操作方法 |
|**TransformUtils** | 转化工具类,包含int,string转化二进制,字母大小写转化等等 |
|**FileUtils** | 文件缓存类,主要是存储和获取字符串,Map,Json等数据,写到本地file文件 |
|**TransformUtils** | 转化工具类,包含int,string转化二进制,字母大小写转化等等 |
|**AppLocalizations** | i18相关,可以设置locale,获取语言中字符串 |
|**ImageUtils** | 图片工具类,主要是负责图片和base64转化,加载网络图片,切换圆角,圆形等 |
|**JsonUtils** | json转化工具类,主要是负责list,map,对象和json之间转化等 |
|**get_it** | spi接口实现,将接口(抽象基类)与具体实现分离和解耦合 |
|**LogUtils** | 日志工具类,设置日志开关,长度,以及可以过滤标签,打印5种类型日志 |
|**NumUtils** | Num格式工具类,主要是负责num相关处理和转化操作 |
|**ObjectUtils** | Object超类工具类,负责各种对象判断,获取长度等操作 |
|**RegexConstants** | 常见正则表达式的规则常量,这部分主要参考AndroidUtils |
|**RegexUtils** | 正则表达式工具类,主要是电话,身份证,邮箱,ip,网络等校验 |
|**ScreenUtils** | 屏幕工具类,获取屏幕的宽高,以及像素密度比等 |
|**SpUtils** | sp存储工具类,适合存储轻量级数据,不建议存储json长字符串|
|**TextUtils** | 文本工具类,主要处理字符串缩略,*,比较,移除等操作 |
|**TimerUtils** | 倒计时器工具类,设置倒计时总时间,间隔时间,开始暂停等 |
|**UrlUtils** | url工具类,获取url的host,参数,校验等操作 |
|**SystemUtils** | 系统工具类,复制内容到剪切板,弹出和关闭软键盘,清除数据等 |
|**TaskQueueUtils** | 队列执行task工具类,插入任务,保证任务的顺序轮训执行 |
|**OtherUtils** | RandomUtils随机工具类,SnackUtils,PlatformUtils平台工具类 |
|**MVP** | Flutter版本的MVP架构模版,待完善中…… |
#### 00.2 如何使用该库
- 具体文档可以demo
### 01.事件通知bus工具类
- 事件总线
- 通常实现了订阅者模式,订阅者模式包含发布者和订阅者两种角色。
- 第一种方式:使用map集合存储key为事件eventName,value为EventCallback实现bus
``` dart
//注册监听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本地文