• Stars
    star
    240
  • Rank 164,125 (Top 4 %)
  • Language
    Dart
  • License
    Apache License 2.0
  • Created about 3 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Flutter Utils 全网最齐全的工具类。包含bus,颜色,日期,文件,json,log,sp,加解密,num,图片,网络,正则,验证,路由,文本,时间,spi,计时器,拓展类,编解码,发射,异常,字节转化,解析等等工具类。

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 系统工具类,复制内容到剪切板,弹出和关闭软键盘,清除数据等
OtherUtils RandomUtils随机工具类,SnackUtils,PlatformUtils平台工具类
MVP Flutter版本的MVP架构模版,待完善中……

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                          : 创建获取应用程序的目录
    

05.Sql数据库工具类

  • 待完善

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.屏幕参数工具类

  • 屏幕参数工具类。获取屏幕的宽,高,像素密度,状态栏等属性。后期完善适配工作……
    screenWidthDp                            : 当前设备宽度 dp
    screenHeightDp                           : 当前设备高度 dp
    pixelRatio                               : 设备的像素密度
    screenWidth                              : 当前设备宽度 px = dp * 密度
    screenHeight                             : 当前设备高度 px = dp * 密度
    
    statusBarHeight                          : 状态栏高度 dp 刘海屏会更高
    bottomBarHeight                          : 底部安全区距离 dp
    textScaleFactory                         : 像素的字体像素数,字体的缩放比例
    

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                          : 两个数相除(防止精度丢失)
    

14.图片处理工具类

  • 其他待完善,补充圆角,圆形切割图片,以及处理本地等图片的方法。后期完善获取图片属性,图片压缩,各种切圆角方法。
    base64ToImage                            : 将base64流转化为图片
    fileToBase64                             : 将图片file转化为base64
    networkImageToBase64                     : 将网络链接图片转化为base64
    assetImageToBase64                       : 将asset图片转化为base64
    showNetImageWh                           : 加载网络图片,并且指定宽高大小。使用默认预加载loading和错误视图
    showNetImageWhError                      : 加载网络图片,并且指定宽高大小。传入错误视图
    showNetImageWhPlaceError                 : 加载网络图片,并且指定宽高大小。传入预加载,错误视图
    showNetImageWhClip                       : 加载网络图片,并且指定宽高大小,切割圆角
    showNetImageCircle                       : 加载网络图片,切割圆形图片
    

15.网络处理工具类

15.1 网络请求工具类

15.2 Url解析工具类

  • 处理url解析相关工具类
    containsTarget                           : 判断url链接是否包含参数
    getFirstPath                             : 获取url中第一个参数
    getUrlHost                               : 获取url链接中host
    getUrlScheme                             : 获取url链接中scheme
    getFirstPath                             : 获取url中第一个参数
    isURL                                    : 返回输入是否匹配url的正则表达式
    

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                             : 检查字符串值是否大写
    

19.路由管理工具类

  • 路由跳转相关工具类:NavigatorUtils
    parseRoute                               : 解析路由数据并返回map
    parseRouter                              : 从window获取NA传递的路由参数
    pushGlobal                               : 从根结点跳转页面
    push                                     : 原生导航到新路由
    pushAnimation                            : 跳转页面带动画。采用原生PageRouteBuilder,这个是一个渐变的效果
    pushAnimationFade                        : 跳转页面带动画
    
    /// type ---> SlideRL                    从右到左的滑动
    /// type ---> SlideLR                    从左到右的滑动
    /// type ---> SlideTB                    从上到下的滑动
    /// type ---> SlideBT                    从下到上的滑动
    /// type ---> Fade                       透明过渡
    pushAnimationType                        : 跳转页面带动画,传入type类型。
    pushNamed                                : 导航到新路由
    pushNamedArguments                       : 导航到新路由并传入参数
    pushResult                               : 跳转新页面并返回结果回调
    

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'),
    ];

23.Time时间工具类

24.SPI帮助工具类

  • spi简单介绍
    • Service Locator可以将接口(抽象基类)与具体实现分离和解耦合,同时允许通过接口从App中的任何位置访问具体实现。
    //第一步注册
    GetIt serviceLocator = GetIt.instance;
    getIt.registerSingleton<BusinessService>(new BusinessServiceImpl());
    
    //第二步使用
    BusinessService businessService = serviceLocator<BusinessService>();
    businessService.noneBusinessPattern();
    
    //第三步解绑
    serviceLocator.resetLazySingleton<BusinessService>();
    

25.计时器辅助工具类

  • 计时器辅助工具类
    TimerUtils                               : 创建倒计时器
    setTotalTime                             : 设置倒计时总时间
    setInterval                              : 设置Timer间隔
    startTimer                               : 启动定时Timer
    updateTotalTime                          : 重设倒计时总时间
    isActive                                 : 判断Timer是否启动
    pauseTimer                               : 暂停倒计时器
    cancel                                   : 取消计时器
    setOnTimerTickCallback                   : 设置倒计时器的监听
    

26.常见拓展工具类

26.1 int拓展类:ExtensionInt

  • ExtensionInt拓展类
    isPalindrome                             : 检查int是否为回文
    isOneAKind                               : 检查所有数据是否具有相同的值
    toBinary                                 : 转换int值为二进制
    toBinaryInt                              : 转换int值为二进制int
    fromBinary                               : 转换int值为二进制字符串
    

26.2 List拓展类:ExtensionList

  • ExtensionList拓展类
    toJsonString                             : 将list转化为json字符串
    getJsonPretty                            : 将list转化为json字符串,换行
    valueTotal                               : 获取num列表的总值(int/double)
    isNull                                   : 判断对象是否为null
    isNullOrBlank                            : 检查数据是否为空或空(空或只包含空格)
    

26.3 Map拓展类:ExtensionMap

  • ExtensionMap拓展类【set拓展类同理】
    toJsonString                             : 将map转化为json字符串
    getJsonPretty                            : 将map转化为json字符串换行
    isNull                                   : 判断对象是否为null
    isNullOrBlank                            : 检查数据是否为空或空(空或只包含空格)
    

26.4 String拓展类:ExtensionString

  • 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                             : 检查字符串值是否大写
    

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---->
    

35.解析数据工具类

  • 解析xml/html数据工具类

36.字节转化工具类

  • ByteUtils转化相关的操作工具类
    toBinary                                 : 转换int值为二进制
    toReadable                               : 将字节数组转换为可读字符串
    toBase64                                 : 将字节数组转换为base64字符串
    fromBase64                               : 转换base64字符串到字节数组
    clone                                    : 克隆字节数组
    same                                     : 判断两个字节是否相同
    extract                                  : 从字节序列中提取数据
    combine                                  : 将两个字节拼接
    insert                                   : 在字节某个索引处插入字节
    remove                                   : 在字节某个索引处移除字节
    

40.其他相关工具类

40.2 随机工具类

  • RandomUtils
    randomColor                              : 生成一个表示十六进制颜色的随机整数
    randomString                             : 生成指定长度或随机长度的随机字符串
    randInt                                  : 在开始和结束之间生成一个随机数
    randomElement                            : 从列表中返回一个随机元素
    

40.3 获取平台工具类

  • PlatformUtils。该工具类可以通过获取平台,然后设置一个value区别平台信息。
    final value = PlatformUtils.select(
      ios: "ios",
      android: "android",
      web: "web",
      fuchsia: "fuchsia",
      macOS: () => "macOS",
      windows: () => "windows",
      linux: () => "linux",
    );
    
    //结果,在Android设备上,value就是:android
    

40.4 剪切板工具类

  • 系统工具类,主要是软键盘操作和复制内容到剪切板
    copyToClipboard                          : 拷贝文本内容到剪切板
    hideKeyboard                             : 隐藏软键盘,具体可看:TextInputChannel
    showKeyboard                             : 展示软键盘
    clearClientKeyboard                      : 清除数据
    

41.参考项目和博客

More Repositories

1

YCBlogs

技术博客笔记大汇总,包括Java基础,线程,并发,数据结构;Android技术博客等等;常用设计模式;常见的算法;网络协议知识点;部分flutter笔记;还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!转载请注明出处,谢谢!
6,368
star
2

YCAppTool

组件化综合案例,组件分层为:基础公共组件,功能组件,业务组件,主工程。每一层组件的建设,很详细的工程案例,很全面的一个组件化实践案例。一个超级综合案例!
Java
3,133
star
3

YCVideoPlayer

基础封装视频播放器player,可以在ExoPlayer、MediaPlayer原生MediaPlayer可以自由切换内核;该播放器整体架构:播放器内核(自由切换) + 视频播放器 + 边播边缓存 + 高度定制播放器UI视图层。支持视频简单播放,列表播放,仿抖音滑动播放,自动切换播放,使用案例丰富,拓展性强。
Java
2,138
star
4

YCWebView

基于腾讯x5开源库,提高webView开发效率,大概要节约你百分之六十的时间成本。该案例支持处理js的交互逻辑且无耦合、同时暴露进度条加载进度、可以监听异常error状态、支持视频播放并且可以全频、支持加载word,xls,ppt,pdf,txt等文件文档、发短信、打电话、发邮件、打开文件操作上传图片、唤起原生App、支持webView页面截图、x5库为最新版本,功能强大。
Java
1,725
star
5

YCAndroidTool

用于项目测试,崩溃重启操作,崩溃记录日志【可以查看,分享】和重启【多种重启app方式】;网路拦截查看的工具小助手,拦截请求和响应数据,统计接口请求次数,流量消耗,以及统计网络链接/dns解析/request请求/respond响应等时间。提高开发效率……
Java
718
star
6

YCStateLayout

State switching, so that the View state switch and Activity completely separate. Using builder mode to freely add the required state View, can set data, data is empty, load data error, network error, load and other states, and support the layout of custom state. At present has been used in other formal projects, strong expansion!
Java
558
star
7

YCSlideLayout

购物商场商品详情页面自定义控件,模仿淘宝、京东、考拉等商品详情页分页加载的UI效果。可以嵌套RecyclerView、WebView、ViewPager、ScrollView等等。支持设置上拉分页加载动画效果……
Java
490
star
8

YCCustomText

自定义文本控件,支持富文本,包含两种状态:编辑状态和预览状态。编辑状态中,可以对插入本地或者网络图片,可以同时插入多张有序图片和删除图片,支持图文混排,并且可以对文字内容简单操作加粗字体,设置字体下划线,支持设置文字超链接(超链接支持跳转),已经用于多个实际项目中……
Java
478
star
9

YCRefreshView

自定义支持上拉加载更多,下拉刷新,可以自定义头部和底部,可以添加多个headerView,使用一个原生recyclerView就可以搞定复杂界面。支持自由切换状态【加载中,加载成功,加载失败,没网络等状态】的控件,可以自定义状态视图View。拓展功能【支持长按拖拽,侧滑删除】,轻量级,可以选择性添加 。多年前已经使用于前项目投资界,新芽,沙丘大学等APP正式项目中!持续更新……
Java
453
star
10

YCUpdateApp

轻量级版本更新弹窗,弹窗上支持更新进度条,可以设置普通更新或者强制更新。解决8.0以上通知栏不显示问题,解决7.0以上安装apk异常,下载完成则会自动提示安装;下载异常,失败,错误等状态,支持重启下载任务;还支持自定义下载路径。代码量少,调用简单……
Java
447
star
11

YCCaptureTool

App综合防抓包实践,关闭代理,设置配置文件;设置单向认证或双向认证;对数据加密和解密;sign签名参数;防止xposed,root,va挂载等操作。 比较通用全面的防抓包技术方案!
Java
410
star
12

YCScrollPager

仿抖音,快手,短视频,竖直方向,一次滚动一个页面的封装库。目前支持ViewPager做法,也支持RecyclerView做法……使用ViewPager则只是修改滑动速率,以及滚动翻页过渡时间;使用recyclerView打造丝滑切换视频的功能,更多内容可以看demo
Java
373
star
13

YCNotification

通知栏封装库,强大的通知栏工具类,链式编程调用,解决了8.0以上通知栏不显示问题,支持多种不同的使用场景,兼容老版本。还有自定义通知栏view,可高度定制布局……
Java
372
star
14

YCDialog

自定义弹窗,其中包括:自定义Toast;自定义dialog控件;自定义DialogFragment弹窗;自定义PopupWindow弹窗;还有自定义Snackbar等等;简单便用。目前已经用于多个正式项目中。
Java
358
star
15

YCAudioPlayer

音频播放器,基础播放功能有:播放,暂停,下一首,上一首;可以设置多种播放类型:顺序播放,随机播放,单曲循环;可以设置播放进度快慢,参考混沌大学APP;支持后台播放,可以扫描本地音频,有效处理了捕获/丢弃音频焦点逻辑,支持耳机线控。通知栏,底部音频播放控制栏,音频List页面和播放详情页数据同步。持续更新中……
Java
347
star
16

YCStatusBar

关于状态栏方案总结案例,适合于绝大多数的使用场景……同时,兼容了小米,魅族等手机状态栏字体颜色设置失效问题。已经用于实际项目投资界,新芽,沙丘大学等APP,一键集成并使用!支持单Activity多Fragment动态修改状态栏颜色,入侵性低,一行代码即可实现你需要的需求
Java
312
star
17

YCJniHelper

JNI学习案例,通过简单的案例快速入门jni开发。JNI基础语法介绍,so库生成打包和反编译,Java和C/C++相关调用案例
Java
254
star
18

YCThreadPool

轻量级简易线程池库,轻量级线程池异步库,支持线程执行过程中状态回调监测(包含成功,失败,异常等多种状态);支持创建异步任务,可以设置线程的名称,延迟执行时间,线程优先级,回调callback等;可以根据自己需要创建自己需要的线程池;线程异常时,可以打印异常日志,避免崩溃。
Java
224
star
19

YCCommonLib

组件化开发中基础公共库,activity栈管理;fragment周期监听;Lru缓存库;反射库;分区存储;Log日志打印和存储;通用缓存库(支持sp,mmkv,lru,disk,fastsp等多种存储方式切换);App重启;通用全面的工具类Utils;通用基类fragment,adpater,activity等简单封装;intent内容打印到控制台库;通用基础接口
Java
187
star
20

YCWidgetLib

自定义控件,其中包含自定义折叠布局,拓展性强使用简单;万能自定义红点控件,充分解耦合接入方便;多种方案实现阴影效果库;自定义view和viewGroup圆角控件,彻底解决圆角问题等
Java
184
star
21

YCWalleHelper

瓦力多渠道打包的Python脚本测试工具,通过该自动化脚本,自需要run一下或者命令行运行脚本即可实现美团瓦力多渠道打包,打包速度很快。配置信息十分简单,代码中已经注释十分详细。可以自定义输出文件路径,可以修改多渠道配置信息,简单实用。
Tcl
133
star
22

YCBannerView

轮播图,支持多种自定义属性,可以设置轮播红点或者轮播数字,支持设置引导页。可以根据不同使用场景,可以选择无限循环,静态管理或者动态管理adapter,还可以设置暂停和开始轮播。后期添加了RecyclerView轮播图,同时自定义多种类型SnapHelper,卡片滑动流畅,目前已经用于多个正式项目中!!
Java
106
star
23

YCModelBus

组件之间的通信,很友好起到隔离效果,接口+实现类,使用注解生成代码方式,无需手动注册,将使用步骤简单化,支持组件间以暴露接口提供服务的方式进行通信。
Java
77
star
24

YCHybridFlutter

Android和flutter混合开发案例
Dart
71
star
25

YCServerLib

gRPC学习案例,使用gRPC作为网络方案可以带来高效性、跨平台和语言、可靠性、易于使用和可扩展性等收益。同时可以减少手动编写代码的工作量,提高开发效率。
Java
49
star
26

YCStudyC

系统性学习C/C++编程语音,记录的Demo案例和学习笔记
C++
48
star
27

YCToolLib

按组划分的自定义adapter适配器,一个recyclerView可以完成强大的group+children类型的业务需求。每组支持添加header,footer,children,且每一个都支持设置多类型type的view视图。常见使用场景:仿懂车帝,汽车之家分组图片查看器;仿QQ联系人分组,可以折叠和伸展;以及复杂分组页面……
Java
46
star
28

YCDesignHelper

注解学习小案例,比较系统性学习注解并且应用实践。简单应用了运行期注解,通过注解实现了setContentView功能;简单应用了编译器注解,通过注解实现了防暴力点击的功能,同时支持设置时间间隔;使用注解替代枚举;使用注解一步步搭建简单路由案例。结合相应的博客,在来一些小案例,从此应该对注解有更加深入的理解……
Java
45
star
29

YCArchitecture

MVC,MVP,MVVM框架案例实践,Jetpack,Compose等学习演进。不同架构案例demo对比……
Java
44
star
30

YCTimerHelper

倒计时工具,分别使用了handler,自定义CountDownTimer,Timer和TimerTask,chronometer控件,和属性动画实现倒计时的功能。封装CountDownTimer倒计时器【在原有基础上增加了暂停和恢复倒计时功能】,解决了倒计时无法到0和从最大值开始bug
Java
13
star
31

YCVaHelpTool

VA学习案例,研究挂载,逆向,安全这一块
Java
4
star
32

YCSplashSdk

打开app启动页sdk,支持图片广告,也支持视频
3
star
33

YCUniApp

uni开发的项目,由于公司项目做混合开发,因此边学边做。基础入门级的案例分析,近期学习更新中
Vue
3
star
34

YCPluginTool

Plugin插件学习工具
2
star
35

yangchong211

1
star