Dart 常用工具類庫common_utils(新)

Dart常用工具類庫 common_utils. 如果你有好的工具類歡迎PR.

Dart常用工具類庫 common_utils

1、TimelineUtil : 時間軸.(新)
2、TimerUtil : 倒計(jì)時,定時任務(wù).(新)
3、MoneyUtil : 精確轉(zhuǎn)換,防止精度丟失,分元互轉(zhuǎn),支持格式輸出.(新)
4、LogUtil : 簡單封裝打印日志.(新)
5、DateUtil : 日期轉(zhuǎn)換格式化輸出.
6、RegexUtil : 正則驗(yàn)證手機(jī)號,身份證,郵箱等等.
7、NumUtil : 保留x位小數(shù).精確加、減、乘、除, 防止精度丟失.
8、ObjectUtil : 判斷對象是否為空(String List Map),判斷兩個List是否相等.

Flutter工具類庫 flustars

1、SpUtil : 單例"同步" SharedPreferences 工具類..
2、ScreenUtil : 屏幕適配,獲取屏幕寬、高、密度,AppBar高,狀態(tài)欄高度,屏幕方向.
3、WidgetUtil : 獲取Widget寬高,在屏幕上的坐標(biāo).

Add dependency

dependencies:
  common_utils: x.x.x  #latest version

APIs

  • SpUtil SharedPreferences 工具類

getString
putString
getBool
putBool
getInt
putInt
getDouble
putDouble
getStringList
putStringList
getDynamic
getKeys
remove
clear
isInitialized
  • NumUtil 數(shù)字工具類(精確運(yùn)算,防止精度丟失)

getIntByValueStr            : 數(shù)字字符串轉(zhuǎn)int.
getDoubleByValueStr         : 數(shù)字字符串轉(zhuǎn)double.
getNumByValueStr            : 保留x位小數(shù) by 數(shù)字字符串.
getNumByValueDouble         : 保留x位小數(shù) by double.
add                         : 加(精確相加,防止精度丟失).
subtract                    : 減(精確相減,防止精度丟失).
multiply                    : 乘(精確相乘,防止精度丟失).
divide                      : 除(精確相除,防止精度丟失).
remainder                   : 余.
lessThan                    : < .
thanOrEqual                 : <= .
greaterThan                 : > .
greaterOrEqual              : >= .
  • MoneyUtil 金額工具類(精確轉(zhuǎn)換,防止精度丟失)

changeF2Y                   : 分 轉(zhuǎn) 元, format格式輸出.
changeFStr2YWithUnit        : 分字符串 轉(zhuǎn) 元, format 與 unit 格式 輸出.
changeF2YWithUnit           : 分 轉(zhuǎn) 元, format 與 unit 格式 輸出.
changeYWithUnit             : 元, format 與 unit 格式 輸出.
  • TimelineUtil 時間軸工具類(x分鐘,x小時,x天...)

///(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(昨天).優(yōu)先級高于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               : 自定義設(shè)置配置信息.
formatByDateTime            : 格式輸出時間軸信息 by DateTime .
format                      : 格式輸出時間軸信息.
  • TimerUtil 定時器/倒計(jì)時 工具類

setInterval                 : 設(shè)置Timer間隔.
setTotalTime                : 設(shè)置倒計(jì)時總時間.
startTimer()                : 啟動定時Timer.
startCountDown              : 啟動倒計(jì)時Timer.
updateTotalTime             : 重設(shè)倒計(jì)時總時間.
cancel                      : 取消計(jì)時器.
setOnTimerTickCallback      : 計(jì)時器回調(diào).
isActive                    : Timer是否啟動.
  • LogUtil Log工具類

init(isDebug, tag)          : isDebug: 模式, tag 標(biāo)簽.
e(object, tag)              : 日志e
v(object, tag)              : 日志v,只在debug模式輸出.
  • DateUtil 日期工具類

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分
}
getNowDateMilliseconds          : 獲取現(xiàn)在 毫秒.
getNowDateStr                   : 獲取現(xiàn)在 日期字符串.(yyyy-MM-dd HH:mm:ss)
getDateMillisecondsByTimeStr    : 獲取毫秒 By 日期字符串(Format格式輸出).
getDateStrByTimeStr             : 獲取日期字符串 By 日期字符串(Format格式輸出).
getDateStrByMilliseconds        : 獲取日期字符串 By 毫秒(Format格式輸出).
getDateStrByDateTime            : 獲取日期字符串 By DateTime(Format格式輸出).
getWeekDay                      : 獲取WeekDay By DateTime.
getZHWeekDay                    : 獲取星期 By DateTime.
getWeekDayByMilliseconds        : 獲取WeekDay By 毫秒.
getZHWeekDayByMilliseconds      : 獲取星期 By 毫秒.
isLeapYearByYear                : 是否是閏年.
  • ScreenUtil 屏幕工具類

screenWidth               : 獲取屏幕寬.
screenHeight              : 獲取屏幕高.
screenDensity             : 獲取屏幕密度.
appBarHeight              : 獲取系統(tǒng)AppBar高度.
statusBarHeight           : 獲取系統(tǒng)狀態(tài)欄高度.
getScreenWidth            : 獲取當(dāng)前屏幕寬.
getScreenHeight           : 獲取當(dāng)前屏幕高.
getOrientation            : 獲取當(dāng)前屏幕方向.
  • WidgetUtil Widget工具類

asyncPrepare              : widget渲染完成監(jiān)聽,監(jiān)聽widget寬高變化,callback返回寬高等參數(shù).
getWidgetBounds           : 獲取widget 寬高.
getWidgetLocalToGlobal    : 獲取widget在屏幕上的坐標(biāo).
  • RegexUtil 正則工具類

isMobileSimple            : 簡單驗(yàn)證手機(jī)號
isMobileExact             : 精確驗(yàn)證手機(jī)號
isTel                     : 驗(yàn)證電話號碼
isIDCard                  : 驗(yàn)證身份證號碼
isIDCard15                : 驗(yàn)證身份證號碼 15 位
isIDCard18                : 簡單驗(yàn)證身份證號碼 18 位
isIDCard18Exact           : 精確驗(yàn)證身份證號碼 18 位
isEmail                   : 驗(yàn)證郵箱
isURL                     : 驗(yàn)證 URL
isZh                      : 驗(yàn)證漢字
isDate                    : 驗(yàn)證 yyyy-MM-dd 格式的日期校驗(yàn),已考慮平閏年
isIP                      : 驗(yàn)證 IP 地址
  • ObjectUtil

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

//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;
  //定時任務(wù)test
  timerUtil = new TimerUtil(mInterval: 1000);
  //timerUtil.setInterval(1000);
  timerUtil.setOnTimerTickCallback((int value) {
      LogUtil.e("TimerTick: " + value.toString());
  });
  timerUtil.startTimer();
  //timerUtil.cancel();
 
TimerUtil timerCountDown;
     //倒計(jì)時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開源庫集合

GitHub : common_utils

Demo??? : flutter_demos

APK??????? :點(diǎn)擊下載 v1.0.4

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容