Flutter 常用函数

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



//转为bool值
bool BoolValue(dynamic obj, {bool defaultBool = false}) {
  if(obj is bool){
    return obj;
  }
  return defaultBool;
}
//转为字符串
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转int
// String a = '33';
// int b = int.parse(a);
}
//转为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中转,将String类型转为int类型

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

//转为double浮点型字符串
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';
}



//转为价格: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表现的可能为1.000000000001或者0.000000000009
  //String doubleStr = DoubleStrValue(obj);

  //浮点型
  double objDouble = DynamicToDouble(obj);//p_getDoubleByValueStr(doubleStr);

  //判断负数
  bool hasFu= objDouble<0;

  //四舍五入保留两位小数
  String objString = '';
  if(hasFu){ //负号需要提前
    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字符串转化为json对象
dynamic MapJsonvalueToObject(dynamic map, String key, {int defaultType=0}){
  dynamic defaultValue = {};
  if(defaultType==0){//转为Map
    defaultValue = {};
  } else if(defaultType==1){//转为List
    defaultValue = [];
  } else if(defaultType==2){//转为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 对应 任意类型的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 对应 List类型的value
List MapValuelist(dynamic map, dynamic key){

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

//获取map 的 key 对应 Map类型的value
Map MapValuemap(dynamic map, dynamic key){
  dynamic org = MapValueobj(map, key);
  if(org is Map) {
    return org;
  }
  return {};
}
//获取map 的 key 对应 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中转,将String类型转为int类型
    num ?resNum = num.tryParse(res);
    int resInt = resNum?.toInt()??0;
    return resInt;
  }
  return 0;
}

//获取map 的 key 对应 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数组的index下标对应的元素
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 对应 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 对应 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;
}

//数据转化为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中转,将String类型转为int类型

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

  } else if (count is int) {
    return count;
  } else {
    return 0;
  }
}
//数据转化为list(隐式转为显式)
List DynamicTolist(dynamic count) {
  if (StrIsEmpty(count)) {
    return [];
  } else if (count is List) {
    return count;
  }
  return [];
  }
//数据转化为Map(隐式转为显式)
Map DynamicTomap(dynamic count) {
  if (StrIsEmpty(count)) {
    return {};
  } else if (count is Map) {
    return count;
  }
  return {};
}
//数据转化为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;
  }
}

//数据转化为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 对应逗号(splitStr)拼接的url(字符串)数组
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 对应Map<String, dynamic>数组的url数组
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;
}

//从逗号"," 拼接的字符串中转化为包含url的数组
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;
}

//从"/" 拼接的字符串中转化为包含url的数组
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;
}

//价格金额显示处理:将字符串转为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类型都可以调用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();
}



///检测Map 的 某个key 对应的value不是空(空值)数组----=== MapValuelist(map,     key).isNotEmpty
bool MapValueForKeyIsNotNilArr({required dynamic map, required String key}) {
//return true不是空(空值)数组; 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;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容