Flutter - OdinUtils封装

Flutter - OdinUtils封装 完整代码可以在 GitHub

Flutter - OdinUtils封装 plateform version

1
2
3
4
5
dependencies:
# dart linq function
flinq: ^2.0.2
# dart crypto
crypto: ^3.0.2
  1. OdinUtils 扩展方法包括内容如下:
扩展类型方法名称方法描述
StringcompareIgnoreCase忽略大小写比较
StringisChinaCardId判断中国身份号码格式
StringisChinaMobile判断中国移动电话号码格式
StringisIpAddress判断Ip地址格式
StringisEmail判断邮箱地址格式
StringisUrl判断url地址格式
StringtoMd5string进行md5加密
StringtoSHA1string进行SHA1加密
StringtoCharList转CharList List类型
intunixTimerToTimerUnixTimer时间戳转DateTime
DatTimetoUnixTimeDateTime转UnixTimer时间戳
DatTime减运算符 - 运算符重载时间差
DatTimeisLeapYear是否是闰年
RandomodinNextInt随机 A-B 之间的int随机数
RandomodinNextDouble随机 A-B 之间的double随机数
ParamsSignUtilsurlAddSignurl添加sign签名
ParamsSignUtilsvalidateSign验证url sign签名 是否正确
ParamsSignUtilscreateUrlSign创建 sign签名 是否正确
  1. OdinUtils Utils方法包括内容如下:
工具类类型方法名称方法描述
StringOdinStringUtils.generationCode按长度生成对应的字符串
StringOdinStringUtils.generationLimpidCode按长度生成对应的字符串,不包含 0 o 1 I 等容易混淆的之母和数字
OdinAlgorithmOdinAlgorithm.getRandomListByWeight按权重返回对应需要个数的数组
OdinRandomUtilsOdinRandomUtils.createRandom创建random随机对象
OdinTransformUtilsOdinTransformUtils.convertNumberToChineseMoneyWords数字转人民币大写
OdinTransformUtilsOdinTransformUtils.convertNumberToChineseNumber数字转中文大写
OdinTransformUtilsOdinTransformUtils.convertDateToChineseDate日期转中文大写
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseCalendarHoliday计算中国农历节日
OdinChineseCalendarOdinChineseCalendar(Date类型).weekDayHoliday按某月第几周第几日计算的节日
OdinChineseCalendarOdinChineseCalendar(Date类型).dateHoliday按公历日计算的节日
OdinChineseCalendarOdinChineseCalendar(Date类型).weekDayStr周几的字符
OdinChineseCalendarOdinChineseCalendar(Date类型).dateString公历日期中文表示法 如一九九七年七月一日
OdinChineseCalendarOdinChineseCalendar(Date类型).isLeapYear当前是否公历闰年
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseConstellation28星宿计算
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseHour时辰
OdinChineseCalendarOdinChineseCalendar(Date类型).isChineseLeapMonth是否闰月
OdinChineseCalendarOdinChineseCalendar(Date类型).isChineseLeapYear当年是否有闰月
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseDay农历日
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseDayString农历日中文表示
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseMonth农历的月份
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseMonthString农历月份字符串
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseYear取农历年份
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseYearString中文纪年
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseDateString取农历日期表示法:农历一九九七年正月初五
OdinChineseCalendarOdinChineseCalendar(Date类型).chineseTwentyFourDay当前日期后一个最近节气
OdinChineseCalendarOdinChineseCalendar(Date类型).constellation 计算指定日期的星座序号
OdinChineseCalendarOdinChineseCalendar(Date类型).animal计算属相的索引,注意虽然属相是以农历年来区别的,但是目前在实际使用中是按公历来计算的 鼠年为1,其它类推
OdinChineseCalendarOdinChineseCalendar(Date类型).animalString取属相字符串
OdinChineseCalendarOdinChineseCalendar(Date类型).ganZhiYearString取农历年的干支表示法如 乙丑年
OdinChineseCalendarOdinChineseCalendar(Date类型).ganZhiMonthString取干支的月表示字符串,注意农历的闰月不记干支
OdinChineseCalendarOdinChineseCalendar(Date类型).ganZhiDayString取干支日表示法
OdinChineseCalendarOdinChineseCalendar(Date类型).ganZhiDateString取当前日期的干支表示法如 甲子年乙丑月丙庚日
OdinChineseCalendarOdinChineseCalendar(Date类型).nextDay取下一天
OdinChineseCalendarOdinChineseCalendar(Date类型).pervDay取前一天
  1. test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
test('createUrlSign',(){
var url = "name=odinsam&age=19";
var signUrl = ParamsSignUtils();
var newUrl = signUrl.urlAddSign(url, "abc");
print(newUrl);
});

test('validateUrlSign',(){
var url = "age=19&name=odinsam&sign=34fa599226a44fc7f2431c78a6b15393";
var signUrl = ParamsSignUtils();
var flag = signUrl.validateSign(url, "abc");
print("验证结果:$flag");
expect(flag, true);
});

test('paramsSign',(){
var kv = SplayTreeMap();
kv.addAll({"b":"b"});
kv.addAll({"a":"a"});
for(var k in kv.entries){
print("key:${k.key}\tvalue:${k.value}");
}
print(kv['c']);
});

test('OdinChineseCalendar',(){
var str = OdinChineseCalendar(DateTime.now()).chineseCalendarHoliday();
print(str);
});

test('transformChineseDate',(){
var date = DateTime.now().toString().split(' ')[0];
var str = OdinTransformUtils.convertDateToChineseDate(date);
print(str);
});

test('transformChineseNumber',(){
var str = OdinTransformUtils.convertNumberToChineseNumber("100002001.32");
print(str);
});

test('transformMoneyWork',(){
var str = OdinTransformUtils.convertNumberToChineseMoneyWords("30003.3275");
print(str);
});

test('timer',(){
var dt = OdinChineseCalendar(DateTime.now());
print(dt.dateString());
print(dt.ganZhiDateString());
});

test('listSum',(){
var lst = <Map<Stu, int>>[
{Stu("odinsam1",120):6},{Stu("odinsam2",220):30},{Stu("odinsam3",120):130},{Stu("odinsam4",420):834}
];
var i1=0,i2=0,i3=0,i4=0;
for(var i =0;i<100;i++){
var wlst = OdinAlgorithm.getRandomListByWeight(lst, 1);
if(wlst[0].keys.first.name=="odinsam1"){
i1+=1;
}
if(wlst[0].keys.first.name=="odinsam2"){
i2+=1;
}
if(wlst[0].keys.first.name=="odinsam3"){
i3+=1;
}
if(wlst[0].keys.first.name=="odinsam4"){
i4+=1;
}
}
print("1:${i1}\t\t2:${i2}\t\t3:${i3}\t\t4:${i4}");
});

test('stringUtils',(){
String str="abc";
expect(str.compareIgnoreCase("ABC"), true);
expect(str.compareIgnoreCase("ABC",ignoreCase: false), false);
});

/// 判断中国身份号码格式
test('stringRegex-中国身份号码格式',(){
String str="62010419820729029x";
expect(str.isChinaCardId(), true);
});

/// 判断中国移动电话号码格式
test('stringRegex-中国移动电话号码格式',(){
String str="17377777777";
expect(str.isChinaMobile(), true);
});

/// 判断邮箱地址格式
test('stringRegex-邮箱地址格式',(){
String str="123456@qq.com";
expect(str.isEmail(), true);
});

/// 判断url地址格式
test('stringRegex-url地址格式',(){
String str="https://www.baidu.com";
expect(str.isUrl(), true);
});

/// 判断Ip地址格式
test('stringRegex-Ip地址格式',(){
String str="127.0.0.1";
expect(str.isIpAddress(), true);
});

/// string进行md5加密
test('stringMd5',(){
var str = "odinsam";
expect(str.toMd5(), "6f61c3e668ff2fc275895b843044829c");
expect(str.toMd5(upperCase: true), "6F61C3E668FF2FC275895B843044829C");
});

/// string进行SHA1加密
test('stringSHA1',(){
var str = "odinsam";
expect(str.toSHA1(), "6d07eb5c4263173417428f226655438d346471f9");
expect(str.toSHA1(upperCase: true), "6D07EB5C4263173417428F226655438D346471F9");
});

/// UnixTimer时间戳转DateTime DateTime转UnixTimer时间戳
test('time',(){
var dt = DateTime.now();
int unixTime = dt.toUnixTime();
print(dt.toString());
print(unixTime);
print(unixTime.unixTimerToTimer());
});

/// 按长度生成对应的字符串
test('generationCode',(){
var str = OdinStringUtils.generationCode(4);
print(str);
expect(str.length, 4);
});

/// 按长度生成对应的字符串,不包含 0 o 1 I 等容易混淆的之母和数字
test('generationLimpidCode',(){
var str = OdinStringUtils.generationLimpidCode(6);
print(str);
expect(str.length, 6);
});

test('$MethodChannelOdinutils is the default instance', () {
expect(initialPlatform, isInstanceOf<MethodChannelOdinutils>());
});

test('getPlatformVersion', () async {
Odinutils odinutilsPlugin = Odinutils();
MockOdinutilsPlatform fakePlatform = MockOdinutilsPlatform();
OdinutilsPlatform.instance = fakePlatform;

expect(await odinutilsPlugin.getPlatformVersion(), '42');
});

Getting Started

pub.dev发布地址:odinSam-Flutter - OdinUtils 工具类封装