Flutter 常用工具類庫common_utils(新)
我的 :Flutter開源庫集合
GitHub : ofollow,noindex">common_utils
Pub : common_utils
Demo : flutter_demos
APK : 點選下載 v1.0.4
[common_utils] Flutter常用工具類庫. 如果你有好的工具類歡迎PR.
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、SpUtil : SharedPreferences 工具類.
2、ScreenUtil : 獲取螢幕寬、高、密度,AppBar高,狀態列高度,螢幕方向.
3、WidgetUtil : 獲取Widget寬高,在螢幕上的座標.
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 數字工具類(精確運算,防止精度丟失)
getIntByValueStr: 數字字串轉int. getDoubleByValueStr: 數字字串轉double. getNumByValueStr: 保留x位小數 by 數字字串. getNumByValueDouble: 保留x位小數 by double. add: 加(精確相加,防止精度丟失). subtract: 減(精確相減,防止精度丟失). multiply: 乘(精確相乘,防止精度丟失). divide: 除(精確相除,防止精度丟失). remainder: 餘. lessThan: < . thanOrEqual: <= . greaterThan: > . greaterOrEqual: >= .
-
MoneyUtil 金額工具類(精確轉換,防止精度丟失)
changeF2Y: 分 轉 元, format格式輸出. changeFStr2YWithUnit: 分字串 轉 元, format 與 unit 格式 輸出. changeF2YWithUnit: 分 轉 元, 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(昨天).優先順序高於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 定時器/倒計時 工具類
setInterval: 設定Timer間隔. setTotalTime: 設定倒計時總時間. startTimer(): 啟動定時Timer. startCountDown: 啟動倒計時Timer. updateTotalTime: 重設倒計時總時間. cancel: 取消計時器. setOnTimerTickCallback: 計時器回撥. isActive: Timer是否啟動.
-
LogUtil Log工具類
init(isDebug, tag): isDebug: 模式, tag 標籤. 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: 獲取現在 毫秒. getNowDateStr: 獲取現在 日期字串.(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: 獲取系統AppBar高度. statusBarHeight: 獲取系統狀態列高度. getScreenWidth: 獲取當前螢幕寬. getScreenHeight: 獲取當前螢幕高. getOrientation: 獲取當前螢幕方向.
-
WidgetUtil Widget工具類
asyncPrepare: widget渲染完成監聽,監聽widget寬高變化,callback返回寬高等引數. getWidgetBounds: 獲取widget 寬高. getWidgetLocalToGlobal: 獲取widget在螢幕上的座標.
-
RegexUtil 正則工具類
isMobileSimple: 簡單驗證手機號 isMobileExact: 精確驗證手機號 isTel: 驗證電話號碼 isIDCard: 驗證身份證號碼 isIDCard15: 驗證身份證號碼 15 位 isIDCard18: 簡單驗證身份證號碼 18 位 isIDCard18Exact: 精確驗證身份證號碼 18 位 isEmail: 驗證郵箱 isURL: 驗證 URL isZh: 驗證漢字 isDate: 驗證 yyyy-MM-dd 格式的日期校驗,已考慮平閏年 isIP: 驗證 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; //定時任務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
Android掃碼下載APK

flutter_demos

pub