Flutter 常用工具类库common_utils

常用工具类 - CommonUtils 2、校验实体类部分属性不能为空。 阅读详情

地址:https://pub.flutter-io.cn/packages/common_utils#-readme-tab-

Dart常用工具类库 common_utils
1、TimelineUtil : 时间轴.(新)
2、TimerUtil : 倒计时,定时任务.(新)
3、MoneyUtil : 精确转换,元转分,分转元,支持格式输出.(新)
4、LogUtil : 简单封装打印日志.(新)
5、DateUtil : 日期转换格式化输出.
6、RegexUtil : 正则验证手机号,身份证,邮箱等等.
7、NumUtil : 保留x位小数, 精确加、减、乘、除, 防止精度丢失.
8、ObjectUtil : 判断对象是否为空(String List Map),判断两个List是否相等.

Flutter工具类库 flustars
1、DioUtil : Dio 工具类.
2、SpUtil : 单例"同步" SharedPreferences 工具类.
3、ScreenUtil : 屏幕适配,获取屏幕宽、高、密度,AppBar高,状态栏高度,屏幕方向.
4、WidgetUtil : Widget渲染监听,获取Widget宽高,在屏幕上的坐标.

Add dependency #
dependencies:
common_utils: x.x.x #latest version
APIs #
TimelineUtil -> Example
///(xx)为可配置输出
enum DayFormat {
///(小于10s->刚刚)、x分钟、x小时、(昨天)、x天.
Simple,
///(小于10s->刚刚)、x分钟、x小时、[今年: (昨天/1天前)、(2天前)、MM-dd],[往年: yyyy-MM-dd].
Common,
///小于10s->刚刚)、x分钟、x小时、[今年: (昨天 HH:mm/1天前)、(2天前)、MM-dd HH:mm],[往年: yyyy-MM-dd HH:mm].
Full,
}
///Timeline信息配置.
abstract class TimelineInfo {
String suffixAgo(); //suffix ago(后缀 后).
String suffixAfter(); //suffix after(后缀 前).
String lessThanTenSecond() => ‘’; //just now(刚刚).
String customYesterday() => ‘’; //Yesterday(昨天).优先级高于keepOneDay
bool keepOneDay(); //保持1天,example: true -> 1天前, false -> MM-dd.
bool keepTwoDays(); //保持2天,example: true -> 2天前, false -> MM-dd.
String oneMinute(int minutes); //a minute(1分钟).
String minutes(int minutes); //x minutes(x分钟).
String anHour(int hours); //an hour(1小时).
String hours(int hours); //x hours(x小时).
String oneDay(int days); //a day(1天).
String days(int days); //x days(x天).
DayFormat dayFormat(); //format.
}
setLocaleInfo : 自定义设置配置信息.
formatByDateTime : 格式输出时间轴信息 by DateTime .
format : 格式输出时间轴信息.
TimerUtil -> Example
setInterval : 设置Timer间隔.
setTotalTime : 设置倒计时总时间.
startTimer() : 启动定时Timer.
startCountDown : 启动倒计时Timer.
updateTotalTime : 重设倒计时总时间.
cancel : 取消计时器.
setOnTimerTickCallback : 计时器回调.
isActive : Timer是否启动.
MoneyUtil 精确转换,防止精度丢失 -> Example
changeF2Y : 分 转 元, format格式输出.
changeFStr2YWithUnit : 分字符串 转 元, format 与 unit 格式 输出.
changeF2YWithUnit : 分 转 元, format 与 unit 格式 输出.
changeYWithUnit : 元, format 与 unit 格式 输出.
changeY2F : 元 转 分.
LogUtil #
init(isDebug, tag) : isDebug: 模式, tag 标签.
e(object, tag) : 日志e
v(object, tag) : 日志v,只在debug模式输出.
NumUtil -> Example
getIntByValueStr : 数字字符串转int.
getDoubleByValueStr : 数字字符串转double.
getNumByValueStr : 保留x位小数 by 数字字符串.
getNumByValueDouble : 保留x位小数 by double.
add : 加(精确相加,防止精度丢失).
subtract : 减(精确相减,防止精度丢失).
multiply : 乘(精确相乘,防止精度丢失).
divide : 除(精确相除,防止精度丢失).
remainder : 余.
lessThan : < .
thanOrEqual : <= .
greaterThan : > .
greaterOrEqual : >= .
DateUtil -> Example
enum DateFormat {
DEFAULT, //yyyy-MM-dd HH:mm:ss.SSS
NORMAL, //yyyy-MM-dd HH:mm:ss
YEAR_MONTH_DAY_HOUR_MINUTE, //yyyy-MM-dd HH:mm
YEAR_MONTH_DAY, //yyyy-MM-dd
YEAR_MONTH, //yyyy-MM
MONTH_DAY, //MM-dd
MONTH_DAY_HOUR_MINUTE, //MM-dd HH:mm
HOUR_MINUTE_SECOND, //HH:mm:ss
HOUR_MINUTE, //HH:mm

ZH_DEFAULT, //yyyy年MM月dd日 HH时mm分ss秒SSS毫秒
ZH_NORMAL, //yyyy年MM月dd日 HH时mm分ss秒 / timeSeparate: “:” --> yyyy年MM月dd日 HH:mm:ss
ZH_YEAR_MONTH_DAY_HOUR_MINUTE, //yyyy年MM月dd日 HH时mm分 / timeSeparate: “:” --> yyyy年MM月dd日 HH:mm
ZH_YEAR_MONTH_DAY, //yyyy年MM月dd日
ZH_YEAR_MONTH, //yyyy年MM月
ZH_MONTH_DAY, //MM月dd日
ZH_MONTH_DAY_HOUR_MINUTE, //MM月
dd日 HH时mm分 / timeSeparate: “:” --> MM月dd日 HH:mm
ZH_HOUR_MINUTE_SECOND, //HH时mm分ss秒
ZH_HOUR_MINUTE, //HH时mm分
}
getNowDateMs : 获取现在 毫秒.
getNowDateStr : 获取现在 日期字符串.(yyyy-MM-dd HH:mm:ss)
getDateMsByTimeStr : 获取毫秒 By 日期字符串(Format格式输出).
getDateStrByTimeStr : 获取日期字符串 By 日期字符串(Format格式输出).
getDateStrByMs : 获取日期字符串 By 毫秒(Format格式输出).
getDateStrByDateTime : 获取日期字符串 By DateTime(Format格式输出).
getWeekDay : 获取WeekDay By DateTime.
getZHWeekDay : 获取星期 By DateTime.
getWeekDayByMs : 获取WeekDay By 毫秒.
getZHWeekDayByMs : 获取星期 By 毫秒.
isLeapYearByYear : 是否是闰年.
yearIsEqual : 是否同年.
getDayOfYear : 在今年的第几天.
isYesterday : 是否是昨天.
isToday : 是否是今天.
RegexUtil -> Example
isMobileSimple : 简单验证手机号
isMobileExact : 精确验证手机号
isTel : 验证电话号码
isIDCard : 验证身份证号码
isIDCard15 : 验证身份证号码 15 位
isIDCard18 : 简单验证身份证号码 18 位
isIDCard18Exact : 精确验证身份证号码 18 位
isEmail : 验证邮箱
isURL : 验证 URL
isZh : 验证汉字
isDate : 验证 yyyy-MM-dd 格式的日期校验,已考虑平闰年
isIP : 验证 IP 地址
ObjectUtil -> Example
isEmptyString : 判断String是否为空.
isEmptyList : 判断List是否为空.
isEmptyMap : 判断Map是否为空.
isEmpty : 判断对象是否为空.(String List Map).
isNotEmpty : 判断对象是否非空.(String List Map).
twoListIsEqual : 判断两个List是否相等.
Example #

// Import package
import ‘package:common_utils/common_utils.dart’;

//TimelineUtil
DateTime xxxDateTime = DateTime(2018, 6, 16, 16, 16, 16);
LogUtil.e("Timeline: " + TimelineUtil.formatByDateTime(xxxDateTime, locale: ‘zh’).toString());

//MoneyUtil example
String moneyTxt = MoneyUtil.changeFStr2YWithUnit(“1160”, format: MoneyFormat.NORMAL, unit: MoneyUnit.YUAN_ZH);
String moneyTxt = MoneyUtil.changeYWithUnit(“1.66”, unit: MoneyUnit.YUAN_ZH);

//TimerUtil example
TimerUtil timerUtil;
//定时任务test
timerUtil = new TimerUtil(mInterval: 1000);
//timerUtil.setInterval(1000);
timerUtil.setOnTimerTickCallback((int value) {
LogUtil.e("TimerTick: " + value.toString());
});
timerUtil.startTimer();
//timerUtil.cancel();

TimerUtil timerCountDown;
//倒计时test
timerCountDown = new TimerUtil(mInterval: 1000, mTotalTime: 3 * 1000);
// timerCountDown.setInterval(1000);
// timerCountDown.setTotalTime(3 * 1000);
timerCountDown.setOnTimerTickCallback((int value) {
double tick = (value / 1000);
LogUtil.e("CountDown: " + tick.toInt().toString());
});
timerCountDown.startCountDown();
//timerUtil.cancel();

//LogUtil example
LogUtil.init(isDebug: true, tag: “test”);
LogUtil.e("…log…", tag: “test”);
LogUtil.v("…log…", tag: “test”);

//DateUtil example
String timeNow = DateUtil.getDateStrByDateTime(DateTime.now());//2018-09-16 23:14:56
String timeNow = DateUtil.getDateStrByDateTime(DateTime.now(),format: DateFormat.ZH_NORMAL);//2018年09月16日 23时16分15秒
String weekday = DateUtil.getWeekDay(DateTime.parse(“2018-09-16”));//Sunday
String weekdayZh = DateUtil.getZHWeekDay(DateTime.parse(“2018-09-16”));//星期日

//First Page init. Notice!!!
ScreenUtil.getInstance().init(context);

ScreenUtil.screenWidth
ScreenUtil.screenHeight
ScreenUtil.statusBarHeight
ScreenUtil.screenDensity

List listA = [“A”, “B”, “C”];
List listB = [“A”, “B”, “C”];
print("Two List Is Equal: " + ObjectUtil.twoListIsEqual(listA, listB).toString());

// Global variable,Reference example
WidgetUtil widgetUtil = new WidgetUtil();

@override
Widget build(BuildContext context) {
widgetUtil.asyncPrepare(context, false, (Rect rect) {
double width = rect.width;
double height = rect.height;
});
return ;
}

//Widgets must be rendered completely. Otherwise return Rect.zero.
Rect rect = WidgetUtil.getWidgetBounds(context);
double width = rect.width;
double height = rect.height;

//Widgets must be rendered completely. Otherwise return Offset.zero.
Offset offset = WidgetUtil.getWidgetLocalToGlobal(context);
double dx = offset.dx
double dx = offset.dy

Flutter 项目实战 网络请求MD5+时间戳+验证签名 十一 这次面试问的还是还是有难度的,要求当场写代码并且运行,也是很考察面试者写代码因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。 阅读详情

相关推荐

Flutter 仿滴滴出行App(1)

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕。

2401_84412961的博客 909

common的utils模块

common的utils模块

骨子里对自己的信任,决定未来的成败! 4207

Flutter开发环境安装与配置全指南

跨平台开发框架Flutter凭借其高效的开发体验和统一的代码库支持,已成为移动应用开发的热门选择。本文从开发环境配置的基础概念入手,详细解析了Flutter SDK、Dart语言及配套工具链的安装原理。通过系统环境变量配置、平台特定工具链集成(Android Studio/Xcode)以及IDE插件安装等步骤,帮助开发者快速搭建完整的Flutter开发环境。特别针对Android和iOS双平台开发场景,提供了环境验证工具flutter doctor的使用技巧和常见问题解决方案,涵盖从Windows/macO

dianchamian8747的博客 468

Flutter常用的第三方库整理

文章目录1、下载模块flutter_xupdate2、图片拍照和选择image_picker3、滚轮选择flutter_datetime_picker4、手机IP获取dart_ipify5、对html解析为文本的库flutter_widget_from_html6、对于金钱数值的处理money27、生成手机标志uuid8、发布/订阅事件总线event_bus9、应用信息的获取package_info10、对于微信SDK的封装处理fluwx11、AES加密encrypt12、字符串占位符sprintf13、状

Mr_Tony的专栏 3947

Windows 11 + AMD 780M 运行 ComfyUI 完整指南:DirectML 实战方案

ComfyUI 是基于 PyTorch 的 Stable Diffusion 可视化工作流工具,其性能高度依赖 GPU 后端支持。在 Windows 平台,传统 CUDA 方案仅适配 NVIDIA 显卡,而 AMD 核显用户长期面临 ROCm 兼容性差、驱动链路断裂等系统级障碍。DirectML 作为微软原生机器学习 API,绕过 ROCm 生态断层,直接对接 DirectX 12 硬件抽象层,成为 RDNA 3 架构(如 Radeon 780M)在 Windows 11 上运行 AI 绘画的最优解。它提供

weixin_30099989的博客 719

告别130MB/s瓶颈!用Zynq+NVMe实现1.2GB/s高速存储的PL数据分流实战

本文详细介绍了如何通过Zynq+NVMe实现1.2GB/s高速存储的PL数据分流方案,突破传统Zynq架构130MB/s的瓶颈。文章分享了PL直连NVMe的硬件架构设计、软件栈优化及性能调优实战技巧,帮助开发者实现高速数据流的稳定存储。

weixin_42653691的博客 371

Dart 常用工具类库common_utils(新)

Dart常用工具类库 common_utils. 如果你有好的工具类欢迎PR. Dart常用工具类库 common_utils 1、TimelineUtil : 时间轴.(新) 2、TimerUtil : 倒计时,定时任务.(新) 3、MoneyUtil : 精确转换,防止精度丢失,分元互转,支持格式输出.(新) 4、LogUtil : 简单封装打印日志.(新) 5、DateUtil : 日期...

油焖茄子 的博客 3768

相机图像质量研究(22)常见问题总结:CMOS期间对成像的影响--光学串扰

光学串扰是一个比较难以理解的光学现象,实际影响往往不大。一、光学串扰产生的原因通常是入射角度太大,光线在不同通道之间产生了混叠二、光学串扰产生的现象光学串扰容易导致迷宫纹。总结本节讲了光学串扰产生的原因,现象。

xiaoshixiu的专栏 1572

Flutter快速开发工具类

flustars(Flutter常用工具类库) Pub flustars依赖于Dart常用工具类库common_utils,以及对其他第三方库封装,致力于为大家分享简单易用工具类。如果你有好的工具类欢迎PR. 目前包含SharedPreferences Util, Screen Util, Directory Util, Widget Util。 注意: 由于path_provider库升级,导致...

欢迎加入Android老司机学院 482266514(技术交流群)密码优快云 1456

Wio-LR1121多频段LoRa模块技术解析与应用实践

LoRa技术作为低功耗广域物联网(LPWAN)的核心通信方案,通过独特的扩频调制技术实现远距离传输与强抗干扰能力。其工作原理基于CSS(Chirp Spread Spectrum)调制,支持动态调整扩频因子(SF)和带宽(BW)来平衡传输距离与数据速率。Wio-LR1121模块作为Semtech LR1121芯片的载体,创新性地整合了sub-GHz、S-Band和2.4GHz多频段支持,配合仅1.35μA的睡眠电流,为跨境物联网部署提供了硬件基础。在智慧农业、工业监测等场景中,开发者可通过SPI接口快速集成

weixin_33742618的博客 414

从零到一:在RK3588 Android12上实战RTL8723DU WiFi蓝牙双模驱动移植

本文详细介绍了在RK3588 Android12系统上实战RTL8723DU WiFi蓝牙双模驱动移植的全过程。从驱动源码获取与修改、系统级集成与编译,到调试与性能优化,提供了完整的解决方案。特别针对USB接口适配、电源管理和蓝牙共存等关键问题给出了具体代码示例,帮助开发者快速完成驱动适配并提升设备稳定性。

weixin_28703489的博客 324

Flutter for OpenHarmony:Flutter 三方库 common_utils 基础工具类的瑞士军刀(常用工具集)

在参与鸿蒙(OpenHarmony)大前端开发时,我们经常会遇到一些细碎但繁琐的任务:身份证号校验、手机号脱敏、时间格式化、甚至是一个简单的倒计时逻辑。如果每个项目都手动写一套这些代码,不仅效率低下,还容易出错。是一款极其经典的 Dart 工具库,被称为 Flutter 开发者的“瑞士军刀”。它涵盖了日期、数字、正则、对象、JSON 等各个方面的工具方法。本文将手把手带你在鸿蒙适配中解锁这款效率神器的核心玩法。的设计哲学是将职责单一化。

大山哥 4902

【牛股启动线】副图指标使用技术说明,图文案例分享,通达信炒股指标

如上图,在紫色线在黑色虚线上时,在出现紫色柱线时,通常会出现强势拉升的行情​。柱线加长加上紫色线上扬,进场跟随做多抓强势行情,紫色柱线和紫色线同时做多持续则可以继续持股。如上图,副图指标【牛股启动线】,指标信号包括紫色线走势信号和紫色柱线信号,以及底部的四条虚线技术信号​,还有一条绿色的参考线,一条黑色的虚线两天分档线。如上图,参考买点,紫色柱线开始出现时进场买点,在上图标记的位置对应的就是进场买点​。紫色柱线加长+紫色线上扬,多头共振持股,行情继续拉升阶段,持股待涨或顺势​进场做多。

weixin_69760830的博客 1906

探索Dart与Flutter的强大工具库:common_utils 与 flustars

在现代软件开发中,高效和可靠的工具库是提升开发效率和代码质量的关键。今天,我们将深入介绍一个在Dart和Flutter社区中广受欢迎的开源项目——`common_utils`和`flustars`。这两个工具库提供了丰富的功能,旨在简化开发流程,提升代码的可维护性和性能。 ## 项目介绍 `common_utils`是一个Dart语言的常用工具类库,它包含了日期处理、正则表达式、倒计时、时间轴...

gitblog_00375的博客 577

rv1126 读取sensor输入,输出到屏幕显示【RK_MPI API接口】

rv1126 libdrm VO

学习记录 1万+

Ubuntu docker镜像中下载安装 DPABI(DPARSF)

在Ubuntu服务器的docker镜像中用MATLAB运行DPABI(以及使用DPARSF的功能)。

Pandako's Blog 1722

flutter将毫秒转为日期

更多文章请查看 flutter从入门 到精通 common_utils 工具类已经 封装了 DateUtil 工具类 来处理常见的日期时间数据格式化 common_utils: ^1.1.1 1 对时间数据的操作 //获取当前时间的毫秒数 int nowDateMilliseconds = DateUtil.getNowDateMs(); print("nowDateM...

代码小疯子 6051

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Flutter 插件比较挑选】

收集比较常用的flutter插件

qq_23240725的博客 648

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

flutter学习笔记

1.跨平台移动UI框架2.与现有的代码一起工作(可以直接嵌入到原生代码中或直接把原生代码嵌入到自己的代码中运行)3. 完全免费、开源。

haoxuhong的博客 8242

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Flutter Admin主题定制:打造个性化后台管理界面

Flutter Admin作为基于Flutter的后台管理系统开发模板,不仅提供了完整的管理功能,还支持深度主题定制,帮助开发者打造符合品牌风格的个性化界面。本文将详细介绍如何通过主题设置、颜色调整、字体切换等功能,轻松实现后台界面的个性化改造。 ## 主题定制核心功能概览 Flutter Admin的主题定制功能集中在**设置模块**中,通过直观的界面操作即可完成大部分样式调整。主要支持三大

gitblog_00128的博客 856

The Deck游戏测试策略:Flutter游戏引擎的自动化测试方法

The Deck是一个基于Flutter开发的开源跨平台移动回合制卡牌游戏引擎,为确保游戏在多平台上的稳定运行和良好体验,采用了全面的自动化测试策略。本文将详细介绍The Deck项目的测试架构、核心测试类型以及实施方法,帮助开发者快速掌握Flutter游戏的测试技巧。 ## 测试架构概览:从单元到集成的全链路覆盖 The Deck项目的测试架构采用分层设计,覆盖从底层功能到上层业务逻辑的全链

gitblog_00121的博客 788

Flutter WanAndroid倒计时与定时任务:Timer组件的终极实战指南

想要为你的Flutter应用添加专业的倒计时功能或定时任务吗?🔥 本文将带你深入探索Flutter WanAndroid项目中Timer组件的完整实现方案。作为一款基于Google Flutter的WanAndroid客户端,Flutter WanAndroid展示了如何在实际项目中优雅地处理倒计时与定时任务,支持Android和iOS双平台,集成了BLoC、RxDart、国际化、主题色等现代化

gitblog_00627的博客 411

flutter_photo_manager多平台适配:Android、iOS、macOS与OpenHarmony差异处理全指南

flutter_photo_manager是一款功能强大的Flutter插件,提供了无界面集成的图片、视频和音频抽象管理API,支持Android、iOS、macOS和OpenHarmony四大平台。本文将深入探讨该插件在多平台适配过程中的差异处理策略,帮助开发者轻松实现跨平台媒体资源管理功能。 ## 🌐 多平台架构概览 flutter_photo_manager采用分层设计,通过抽象接口屏

gitblog_00589的博客 1055

rustls 多线程性能测量与优化:80 核下的握手吞吐与票据恢复并发改造

rustls 项目在 2024 年 11 月发布了一份多线程性能专项报告,其核心目标是在 80 核裸金属服务器上量化 rustls、BoringSSL 与 OpenSSL 在不同线程数下的 TLS 握手吞吐,并由此定位、修复了 rustls 会话票据恢复(ticket resumption)路径上的锁竞争问题。本文以该报告为骨架,结合仓库中 `rustls-bench` 基准工具、`admin/b

gitblog_00356的博客 240
上一篇: 解决Flutter Conflicting outputs were detected and the build is unable to prompt for permission to r...
下一篇: Flutter自定义对话框,禁用系统返回按钮 - WillPopScope
老码思途
博客等级 码龄17年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值