1.隐藏软键盘
/*隐藏软键盘*/
static void hideSoftKeyBoard(BuildContext context) {
FocusScope.of(context).requestFocus(FocusNode());
}
2.计时器间隔1s时间执行
/*
* 每次间隔一秒
* 参数time:持续多少秒
* */
static void showTimerOS(Function function,int time) {
Timer.periodic(const Duration(seconds: 1), (timer) {
if(timer.tick >=time){
function();
timer.cancel();
}
// timer.cancel();
});
}
3.MD5,导包来源于插件flustars:
String MD5(String data){
return EncryptUtil.encodeMd5(data);
}
4.获取屏幕宽高:
MediaQuery.of(context!).size.width
MediaQuery.of(context!).size.height
5.千分位分隔符
//千分号分隔符
static String FormatNumber(String count) {
if (count == null || count.isEmpty) {
return '0';
}
var format = NumberFormat('#,###,###,###.##');
try{
return format.format(json.decode(num.parse(count).toString()));
}catch(e){
return count;
}
}
6.月份两位补足
/*将月份补足两位*/
static String dealNumTwo(int i) {
var format = new NumberFormat("00");
return format.format(i);
}
7.版本信息获取,引入的包package_info_plus
class PackInfroUtils {
static PackageInfo? packageInfo;
static Future init() async {
await PackageInfo.fromPlatform().then(
(value) => packageInfo = value,
);
}
/*获取版本名*/
static Future<String> getVersionName() async {
String version = '';
await PackageInfo.fromPlatform().then((value) => {
version = value.version,
});
return version;
}
/**/
static Future<String> getBuildName() async {
if (packageInfo != null) {
return packageInfo!.buildNumber;
}
String buildname = '';
await PackageInfo.fromPlatform().then(
(value) => buildname = value.buildNumber,
);
return buildname;
}
/**/
static Future<String> getVersion() async {
if (packageInfo != null) {
return packageInfo!.version;
}
String buildname = '';
await PackageInfo.fromPlatform().then(
(value) => buildname = value.version,
);
return buildname;
}
}
8.手机和密码校验
/*将手机中间四位赋为星号*/
static String getphoneStar(String phone) {
if (phone.length >= 11) {
return phone.replaceFirst(RegExp(r'\d{4}'), '****', 3);
} else {
return phone;
}
}
//验证是否包含数字,字母,特殊字符中至少两种
static bool checkPassword(String password) {
if (password.isEmpty) {
return false;
}
final reg = RegExp(
r"^(?![\d]+$)(?![a-zA-Z]+$)(?![~!@#$%^&*()_+`\-={};:''”“<>?,/. ]+$).+$");
return reg.hasMatch(password);
}
//同时包含数字,字母,特殊字符三种
static bool checkPassword2(String password) {
if (password.isEmpty) {
return false;
}
final regex = RegExp(
r"^(?=.*[a-zA-Z])(?=.*[\d])(?=.*[~!@#$%^&*()_+`\-={};:''”“<>?,/. ]).+$");
// final rre = RegExp(r'^.+$');
return regex.hasMatch(password);
}
//只有数字
static bool checkNumOnly(String aNumber) {
RegExp regex = new RegExp(r'^[0-9]+$');
if (regex.hasMatch(aNumber)) {
//匹配成功
return true;
}
return false;
}
//只有大写字母
static bool checkCapLetterOnly(String aNumber) {
RegExp regex = new RegExp(r'^[A-Z]+$');
if (regex.hasMatch(aNumber)) {
//匹配成功
return true;
}
return false;
}
9.中英文一起时提前自动换行的问题
//解决中文和英文提前自动换行问题
extension FixAutoLines on String {
String fixAutoLines() {
return Characters(this).join('\u{200B}');
}
}
10.吐司
class ToastUtils {
static void toast(String message) {
Fluttertoast.showToast(
msg: message,
gravity: ToastGravity.CENTER,
textColor: R.color.WHITE,
fontSize: 16,
toastLength: Toast.LENGTH_SHORT);
}
}
11.获取前面7天的日期
//获取前面7天的日期
static List getDateSeven() {
List recentDateList = []; //最近14天日期
var now = DateTime.now(); //当前时间的具体时间
for (int i = 0; i < 7; i++) {
String dateTime = now.add(new Duration(days: -i)).toString(); //过去7天的具体时间
String day = dateTime.substring(0, 10); //日期
recentDateList.add(day);
}
return recentDateList;
}
12.获取当前月份的总天数
int days = DateTime(DateTime.now().year, DateTime.now().month + 1, 0).day;
13.设置圆形头像,无头像则取名字首字母,这里未判断name空或null
/*圆形头像*/
static Widget smallHead_Small(String url, String name) {
return Container(
decoration: BoxDecoration(
border: Border.all(color: R.color.color_f1f4f9, width: 1),
borderRadius: BorderRadius.circular(42)),
child: ClipOval(
child: TextUtil.isEmpty(url)
? Container(
alignment: Alignment.center,
color: R.color.THEME,
width: 32,
height: 32,
child: Text(
name[0],
textAlign: TextAlign.center,
style: R.textStyle.font_white_16,
),
)
: Image.network(
url,
width: 32,
height: 32,
fit: BoxFit.fill,
errorBuilder: (context, error, stackTrace) {
return Container(
alignment: Alignment.center,
color: R.color.THEME,
width: 32,
height: 32,
child: Text(
TextHeader.getFirstText(name),
style: R.textStyle.font_white_16,
),
);
},
),
),
);
}