flutter_utils_plus 0.0.3
flutter_utils_plus: ^0.0.3 copied to clipboard
Flutter开发工具包
使用说明 #
Moment #
- 解析
Moment([DateTime|String|int|Moment])
Moment.utc([DateTime|String|int|Moment])
// 示例
Moment() // 默认为此刻 等同于 Moment(DateTime.now())
Moment(DateTime.parse('1969-07-20 20:18:04')) // DateTime 格式
Moment('2025-12-01 12:00:00') // 字符串格式
Moment(1318781876406) // 时间戳(毫秒)
Moment.utc(1318781876406)
Moment.utc('2025-12-01 12:00:00')
- 操作
Moment().toDate() // 获取 DateTime 对象
Moment().toUtc() // 转换为Utc时间
Moment().unix() // 获取时间戳
Moment().add(Duration duration); // 加法
Moment().add(Number value, String unit);
Moment().subtract(Duration); // 减法
Moment().subtract(Number value, String unit);
Moment().isBefore(dynamic dateTime); // 是否之前
Moment().isAfter(dynamic dateTime); // 是否之后
Moment().isBetween(dynamic startDateTime, dynamic endDateTime); // 是否之间
Moment().isSame(dynamic dateTime, String unit) // 是否相同
// unit参数可简写:days -> d、hours -> h、minutes -> m、seconds -> s、milliseconds -> ms
// 注意:isSame 方法参数全称不带s且支持年[year->y]、月[month->M]
// 示例
Moment().add(1, 'd') // 明天
Moment().add(12, 'hours') // 12小时之后
Moment().add(Duration(days: 7)) // 7天之后
Moment().subtract(1, 'd') // 昨天
Moment().subtract(12, 'hours') // 12小时之前
Moment().subtract(Duration(minutes: 10)) // 10分钟之前
Moment().isBefore('2025-12-01 12:00:00') // 今天是否在该日期之前
Moment().isAfter(DateTime.parse('1969-07-20 20:18:04')) // 今天是否在该日期之后
Moment().isBetween('2025-12-01 12:00:00', '2026-12-01 12:00:00') // 今天是否在该日期之间
Moment().isSame('2025-12-01 12:00:00', 'day') // 该日期是否和今天是用一天
- 显示
Moment().format() // 默认输出DateTime
Moment().format(String) // 按规则输出字符串
// 格式化规则:年(YYYY/YY)、月(MM/M)、日(DD/D)、时(HH/H/hh/h)、分(mm/m)、秒(ss/s)、上午下午(A/a)
// 示例
Moment().format() // 2025-01-01 20:12:12.000+0800
Moment().format('YYYY-MM-DD') // 2025-01-01
Moment().format('YYYY-MM-DD HH:mm:ss') // 2025-01-01 20:12:12
- 时区
如需使用 Timezone 时区,需引入timezone包,并且在main函数中初始化时区数据库。
// main.dart
import 'package:timezone/data/latest.dart' as tz;
void main() {
tz.initializeTimeZones();
}
// 示例
Moment.utc('2024-09-01 00:00:00').tz('America/New_York').format('YYYY-MM-DD HH:mm:ss')
Moment('2025-10-01 00:00:00').tz('Asia/Shanghai', true).toUtc().format()
Validate #
isEmpty : 验证是否为空`String`、`Map`、`List`
isNotEmpty : 验证是否不为空`String`、`Map`、`List`
isEmptyMap : 验证是否为空`Map`
isEmptyList : 验证是否为空`List`
isEmptyString : 验证是否为空`String`
isEqual : 验证是否相等`String`、`Map`、`List`
isChinese : 验证是否包含中文
isMobile : 验证电话号码
isEmail : 验证邮箱
isBank : 验证银行卡号
isVersion : 验证版本号
isIDCard : 验证身份证号码
isURL : 验证 URL
isIP : 验证 IP 地址
isDate : 验证日期格式(YYYY-MM-DD)
isDateTime : 验证日时间格式(YYYY-MM-DD HH:mm:ss)
isAccount : 验证账号(只包含数字/字母/下划线/减号)
isPwd : 验证密码(包含字母、数字、特殊符,任意2种)
UtilsPlus #
- 字符串
camelCase : 蛇形转驼峰
snakeCase : 驼峰转蛇形
maskPhone : 隐藏部分电话号码
formatAmount : 金额千分位逗号分隔
formatSplit : 每隔指定长度添加字符(空格)
- 数字
toNum : 转为数字类型
toInt : 转为整数类型
toFixed : 数字精度转换
calcAdd : 精准计算(加法)
calcSubtract : 精准计算(减法)
calcMultiply : 精准计算(乘法)
calcDivide : 精准计算(除法)
meterToFt : 米(m)转英尺(ft)
ftToMeter : 英尺(ft)转米(m)
meter2ToFt2 : 平方米(m²)转平方英尺(ft²)
ft2ToMeter2 : 平方英尺(ft²)转平方米(m²)
celsiusToFahrenheit : 摄氏度(°C)转华氏度(°F)
fahrenheitToCelsius : 华氏度(°F)转摄氏度(°C)
- 函数
debounce : 防抖函数(停止触发后执行一次,如搜索防抖)
throttle : 节流函数(固定时间内只触发一次,如点击防抖)
- 数组
treeToArray : 树转列表
arrayToTree : 列表转树
arrayToMap : 列表转Map对象
插件开发 #
创建插件
flutter create --template=package hello
运行测试
# 所有测试文件
flutter test
# 或指定测试文件
flutter test test/example_test.dart
运行检验
flutter pub publish --dry-run
运行提交
flutter pub publish --server=https://pub.dartlang.org