Flutter 常用函數(shù)

import 'dart:convert' as convert;

 ///判斷為空
bool StrIsEmpty(dynamic object) {
  if (object == null) return true;
  if (object == []) return true;
  if (object == '') return true;
  if (object == 'null') return true;
  if (object == '(null)') return true;
  if (object == '<null>') return true;
  if (object is String && object.isEmpty) {
    return true;
  } else if (object is List && object.isEmpty) {
    return true;
  } else if (object is Map && object.isEmpty) {
    return true;
  }
  return false;
}
///判斷為非空
bool StrIsNotEmpty(dynamic object) {
  bool isEmpty = StrIsEmpty(object);
  return isEmpty==false;
}



//轉(zhuǎn)為bool值
bool BoolValue(dynamic obj, {bool defaultBool = false}) {
  if(obj is bool){
    return obj;
  }
  return defaultBool;
}
//轉(zhuǎn)為字符串
String StrValue(dynamic obj){
  if(obj==null || obj=='null' || obj=='<null>' || obj=='(null)' || obj=='[]' || obj=='{}'){
    return '';
  }
  if ((obj is int) || (obj is double) || (obj is Map) || (obj is List)){
    return obj.toString();
  }
  if (obj is bool) {
    if(obj==true){
      return 'true';
    } else {
      return 'false';
    }
  }
  if(obj is String){
    return obj;
  }
  return obj.toString();
//String轉(zhuǎn)int
// String a = '33';
// int b = int.parse(a);
}
//轉(zhuǎn)為int整型字符串
String IntegerStrValue(dynamic obj){
  if(obj==null || obj=='null' || obj=='<null>' || obj=='(null)' || obj=='[]' || obj=='{}'){
    return '0';
  }
  if (obj is bool) {
    if(obj==true){
      return '1';
    } else {
      return '0';
    }
  }
  if(obj is int) {
    return '$obj';
  }

  String objStr = StrValue(obj);
  //double或者double類型的字符串不能直接用int.tryParse()
  ///如dart:int ?rateParseInt = int.tryParse('4.0');===>null
  ///即不能用: int ?num = int.tryParse(objStr);
  ///可以使用num中轉(zhuǎn),將String類型轉(zhuǎn)為int類型

  num ?resNum = num.tryParse(objStr);
  int resInt = resNum?.toInt()??0;
  return resInt.toString();
}

//轉(zhuǎn)為double浮點(diǎn)型字符串
String DoubleStrValue(dynamic obj){
  if(obj==null || obj=='null' || obj=='<null>' || obj=='(null)' || obj=='[]' || obj=='{}'){
    return '0';
  }
  if (obj is bool) {
    if(obj==true){
      return '1';
    } else {
      return '0';
    }
  }
  String objStr = StrValue(obj);
  double ?num = double.tryParse(objStr);
  if(num is double) {
    return num.toString();
  }
  return '0';
}



//轉(zhuǎn)為價(jià)格:1,1.1, 1.01; pNum:精度
String PriceStrValue(obj, {int pNum=2}){
  if(StrIsEmpty(obj)){
    return '0';
  }
  if(obj==null || obj=='null' || obj=='<null>' || obj=='(null)' || obj=='[]' || obj=='{}'){
    return '0';
  }
  if (obj is bool) {
    if(obj==true){
      return '1';
    } else {
      return '0';
    }
  }

  double p_getDoubleByValueStr(String valueStr) {
    return double.tryParse(valueStr) ?? 0;
  }
  //doubleStr:1表現(xiàn)的可能為1.000000000001或者0.000000000009
  //String doubleStr = DoubleStrValue(obj);

  //浮點(diǎn)型
  double objDouble = DynamicToDouble(obj);//p_getDoubleByValueStr(doubleStr);

  //判斷負(fù)數(shù)
  bool hasFu= objDouble<0;

  //四舍五入保留兩位小數(shù)
  String objString = '';
  if(hasFu){ //負(fù)號(hào)需要提前
    objString = "-${objDouble.abs().toStringAsFixed(pNum)}";
  } else {
    objString =objDouble.toStringAsFixed(pNum);
  }
  if(objString.contains('.')==false){
    return objString;
  }

  if(objString.contains('.')){
    List<String> temp=objString.split('.');
    String v0= temp[0];
    String v1 = temp[1];


    if(pNum>5){//5位以上的全顯示
      return '${v0}.${v1}';
    }
    String v1_a =  v1;

    if(v1_a.endsWith('00000')){
      int k = v1_a.lastIndexOf('00000');
      v1_a = v1_a.substring(0,k);
    }
    if(v1_a.endsWith('0000')){
      int k = v1_a.lastIndexOf('0000');
      v1_a = v1_a.substring(0,k);
    }
    if(v1_a.endsWith('000')){
      int k = v1_a.lastIndexOf('000');
      v1_a = v1_a.substring(0,k);
    }
    if(v1_a.endsWith('00')){
      int k = v1_a.lastIndexOf('00');
      v1_a = v1_a.substring(0,k);
    }
    if(v1_a.endsWith('0')){
      int k = v1_a.lastIndexOf('0');
      v1_a = v1_a.substring(0,k);
    }

    if(StrIsEmpty(v1_a)){
      return v0;
    }
    return '${v0}.${v1_a}';
  }
  return objString;


}

//輸入框文字去掉空白
  String TFSearchStr(dynamic txt){
  String needStr = StrValue(txt).trim();
  return needStr;
}


//字符串相等
bool StrIsEqual(dynamic obj1, dynamic obj2){
  if(obj1==obj2){
    return true;
  }
  return false;
}
StrThreeConnect(dynamic obj1, dynamic obj2, dynamic obj3) {
  return '$obj1$obj2$obj3';
}

List JsonStrToList(dynamic obj){
  if(StrIsEmpty(obj)){
    return [];
  }
  if(!(obj is String)){
    return [];
  }
  List list = DynamicTolist(convert.jsonDecode(obj));
  return list;
}
Map JsonStrToMap(dynamic obj){
  if(StrIsEmpty(obj)){
    return {};
  }
  if(!(obj is String)){
    return {};
  }
  Map map = DynamicTomap(convert.jsonDecode(obj));
  return map;
}

String ObjToJsonStr(dynamic obj){
  if((obj is Map) || (obj is List)){
    return convert.jsonEncode(obj);
  }
  return StrValue(obj);
}

//將map中的key的json字符串轉(zhuǎn)化為json對(duì)象
dynamic MapJsonvalueToObject(dynamic map, String key, {int defaultType=0}){
  dynamic defaultValue = {};
  if(defaultType==0){//轉(zhuǎn)為Map
    defaultValue = {};
  } else if(defaultType==1){//轉(zhuǎn)為L(zhǎng)ist
    defaultValue = [];
  } else if(defaultType==2){//轉(zhuǎn)為String
    defaultValue = '';
  }
  if(map==null || key==null || key.length<1){
    return defaultValue;
  }
  Map myMap = map as Map;
  if(myMap.keys.length<1){
    return defaultValue;
  }
  if(myMap.containsKey(key) == false){
    return defaultValue;
  }
  if((myMap[key] is String) == false){
    return defaultValue;
  }

  return convert.jsonDecode(myMap[key])??defaultValue;
}



//獲取map 的 key 對(duì)應(yīng) 任意類型的value
dynamic MapValueobj(dynamic map, dynamic key){
  if(!(map is Map)){
    return '';
  }
  if(StrIsEmpty(key)){
    return '';
  }
  Map myMap = map as Map;
  if(myMap.keys.isEmpty){
    return '';
  }
  if(myMap.containsKey(key) == false){
    return '';
  }
  return myMap[key];
}

//獲取map 的 key 對(duì)應(yīng) List類型的value
List MapValuelist(dynamic map, dynamic key){

  dynamic org = MapValueobj(map, key);
  if(org is List) {
    return org;
  }
  return [];
}

//獲取map 的 key 對(duì)應(yīng) Map類型的value
Map MapValuemap(dynamic map, dynamic key){
  dynamic org = MapValueobj(map, key);
  if(org is Map) {
    return org;
  }
  return {};
}
//獲取map 的 key 對(duì)應(yīng) int類型的value
int MapValueint(dynamic map, dynamic key){
  if(!(map is Map)){
    return 0;
  }
  if(StrIsEmpty(key)){
    return 0;
  }
  Map myMap = map as Map;
   if(myMap.keys.length<1){
    return 0;
  }
  if(myMap.containsKey(key) == false){
    return 0;
  }

  var res = myMap[key];
  if(res is int){
    return res;
  }
  if(res is double){
    return res.toInt();
  }
  if(res is String){
    //double或者double類型的字符串不能直接用int.tryParse()
    ///如dart:int ?rateParseInt = int.tryParse('4.0');===>null
    ///即不能用: int ?num = int.tryParse(objStr);
    ///可以使用num中轉(zhuǎn),將String類型轉(zhuǎn)為int類型
    num ?resNum = num.tryParse(res);
    int resInt = resNum?.toInt()??0;
    return resInt;
  }
  return 0;
}

//獲取map 的 key 對(duì)應(yīng) bool類型的value
bool MapValuebool(dynamic map, dynamic key,{bool defaultBool = false}){

  if(!(map is Map)){
    return defaultBool;
  }
  if(StrIsEmpty(key)){
    return defaultBool;
  }
  Map myMap = map as Map;
  if(myMap.keys.length<1){
    return defaultBool;
  }
  if(myMap.containsKey(key) == false){
    return defaultBool;
  }

  var res = myMap[key];
  if(res is bool){
    return res;
  }
  if(res == 1){
    return true;
  }
  if(res == 0){
    return false;
  }
  return defaultBool;
}
//獲取list數(shù)組的index下標(biāo)對(duì)應(yīng)的元素
dynamic ListValueAtIndex(dynamic list, int index, {String defaultValue=''}){
  if(!(list is List && list.isNotEmpty)){
    return defaultValue;
  }
  if(index>list.length-1){
    return defaultValue;
  }
  return (list as List)[index];
}

//獲取map 的 key 對(duì)應(yīng) String類型的value
String MapValueStr(dynamic map, dynamic key){

  if(!(map is Map)){
return '';
  }
  if(StrIsEmpty(key)){
    return '';
  }
  Map myMap = map as Map;
  if(myMap.keys.isEmpty){
    return '';
  }
  if(myMap.containsKey(key) == false){
    return '';
  }
  dynamic obj = myMap[key];

  if(obj==null || obj=='null' || obj=='<null>' || obj=='(null)' || obj=='[]' || obj=='{}'){
    return '';
  }
  if ((obj is int) || (obj is double) || (obj is Map) || (obj is List)){
    return obj.toString();
  }
  if (obj is bool) {
    if(obj==true){
      return 'true';
    } else {
      return 'false';
    }
  }
  if(obj is String){
    return obj;
  }
  return obj.toString();

}
//獲取map 的 key 對(duì)應(yīng) double類型的value
double MapValuedouble(dynamic map, dynamic key){

  if(!(map is Map)){
    return 0;
  }
  if(StrIsEmpty(key)){
    return 0;
  }
  Map myMap = map as Map;
  if(myMap.keys.length<1){
    return 0;
  }
  if(myMap.containsKey(key) == false){
    return 0;
  }

  var res = myMap[key];
  if(res is double){
    return res;
  }
  if(res is int){
    return res.toDouble();
  }
  if(res is String){
    if(double.tryParse(res) is double){
      return double.tryParse(res)??0;
    }
    return 0;
  }
  return 0;
}

//數(shù)據(jù)轉(zhuǎn)化為int
int DynamicToInt(dynamic count) {
  if (StringUtils.isEmpty(count)) {
    return 0;
  } else if (count is double) {
    return count.toInt();
  } else if (count is String) {
    //double或者double類型的字符串不能直接用int.tryParse()
    ///如dart:int ?rateParseInt = int.tryParse('4.0');===>null
    ///即不能用: int ?num = int.tryParse(objStr);
    ///可以使用num中轉(zhuǎn),將String類型轉(zhuǎn)為int類型

    num ?resNum = num.tryParse(count);
      int resInt = resNum?.toInt()??0;
    return resInt;

  } else if (count is int) {
    return count;
  } else {
    return 0;
  }
}
//數(shù)據(jù)轉(zhuǎn)化為list(隱式轉(zhuǎn)為顯式)
List DynamicTolist(dynamic count) {
  if (StrIsEmpty(count)) {
    return [];
  } else if (count is List) {
    return count;
  }
  return [];
  }
//數(shù)據(jù)轉(zhuǎn)化為Map(隱式轉(zhuǎn)為顯式)
Map DynamicTomap(dynamic count) {
  if (StrIsEmpty(count)) {
    return {};
  } else if (count is Map) {
    return count;
  }
  return {};
}
//數(shù)據(jù)轉(zhuǎn)化為double
double DynamicToDouble(dynamic count) {
  if (StringUtils.isEmpty(count)) {
    return 0;
  } else if (count is double) {
    return count;
  } else if (count is String) {
    double t = double.tryParse(count) ?? 0;
    return t;
  } else if (count is int) {
    return count.toDouble();
  } else {
    return 0;
  }
}

//數(shù)據(jù)轉(zhuǎn)化為bool
bool DynamicToBool(dynamic count, {bool defaultValue=false}) {
  if (StringUtils.isEmpty(count)) {
    return defaultValue;
  }

  if (count is bool) {
    return count;
  }

  if (count is String) {
    if(count=='true'){
      return true;
    }
    if(count=='false'){
      return false;
    }
  }
  if (count==1) {
    return true;
  }

  return defaultValue;
}


//獲取map 的 key 對(duì)應(yīng)逗號(hào)(splitStr)拼接的url(字符串)數(shù)組
List MapValueUrlsByCommastr(dynamic map, dynamic key, {String splitStr = ','}){
  String imgsStr = MapValueStr(map, key);
  if(StrIsEmpty(imgsStr)){
    return [];
  }
  dynamic spliArr = imgsStr.split(splitStr);
  if(spliArr is List && (spliArr as List).isNotEmpty){
    return spliArr as List;
  }
  return [];
}

//獲取map 的 key 對(duì)應(yīng)Map<String, dynamic>數(shù)組的url數(shù)組
List GetImageUrlsOfMap(dynamic infoMap, String key, {String picKey='filePath'}){
  List imageUrls = [];
  if(!StrIsEmpty(MapValueobj(infoMap, key))){
    for(dynamic obj in infoMap[key]){
      if(!StrIsEmpty(MapValueStr(obj, picKey))){
        imageUrls.add(MapValueStr(obj, picKey));
      }
    }
  }
  return imageUrls;
}

//從逗號(hào)"," 拼接的字符串中轉(zhuǎn)化為包含url的數(shù)組
List GetUrlsByStr(dynamic imgObj, {String flag=','}){
  String imgStrs = StrValue(imgObj);
  if(StrIsEmpty(imgStrs)){
    return [];
  }
  dynamic tmp = imgStrs.split(flag);
  List needArr = [];
  if(tmp is List && tmp.isNotEmpty) {
    needArr.addAll(tmp);
  }
  return needArr;
}

//從"/" 拼接的字符串中轉(zhuǎn)化為包含url的數(shù)組
List GetListByStr(dynamic imgObj, {String flag='/'}){
  String imgStrs = StrValue(imgObj);
  if(StrIsEmpty(imgStrs)){
    return [];
  }
  dynamic tmp = imgStrs.split(flag);
  List needArr = [];
  if(tmp is List && tmp.isNotEmpty) {
    needArr.addAll(tmp);
  }
  return needArr;
}

//價(jià)格金額顯示處理:將字符串轉(zhuǎn)為0.00的形式
String PriceValue(dynamic obj){
  if(obj==null || obj=='null' || obj=='<null>' || obj=='(null)' || obj=='[]' || obj=='{}' || obj==''){
    return '0.00';
  }
  //int long double 等number類型都可以調(diào)用toStringAsFixed
  if ((obj is int) || (obj is double)){
    String priceStr = obj.toStringAsFixed(2);
    return priceStr;
  }
  if(obj is String){
    double price = double.tryParse(obj)??0;
    String priceStr = price.toStringAsFixed(2);
    return priceStr;
  }
  return obj.toString();
}



///檢測(cè)Map 的 某個(gè)key 對(duì)應(yīng)的value不是空(空值)數(shù)組----=== MapValuelist(map,     key).isNotEmpty
bool MapValueForKeyIsNotNilArr({required dynamic map, required String key}) {
//return true不是空(空值)數(shù)組; false 是空;
  if(StringUtils.isEmpty(key)){
    return false;
}

if((map is Map)==false){
    return false;
  }
  if((map as Map).containsKey(key)==false){
    return false;
  }
  if(((map as Map)[key] is List)==false){
    return false;
  }
  if(((map as Map)[key] as List).length>0){
    return true;
  }
  return false;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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