import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; class Utils { /// 是否字符串为空 static bool isEmpty(String? value) { if (value == null) { return true; } return value.isEmpty || value == 'null'; } /// 字符串是否不为空 static bool isNotEmpty(String? value) { return !isEmpty(value); } /// 判断邮箱 static isEmail(dynamic value, {String? country = "sg"}) { switch (country) { case "sg": RegExp regExp = RegExp(r"^\w{1,}(.\w+)*@[A-z0-9]+(\.[A-z]{2,6}){1,2}$"); if (regExp.hasMatch(value.toString())) { return true; } else { return false; } default: return false; } } /// 判断中国的11位手机号码 static bool isChinaPhoneNumber(dynamic value) { RegExp regExp = RegExp(r"^1\d{10}$"); // 匹配以1开头的11位数字 if (regExp.hasMatch(value.toString())) { return true; } else { return false; } } /// 全局的路由key static final navKey = GlobalKey(); /// 全局的组件key static final widgetKey = GlobalKey(); //页面缓存key static dynamic pageStorageKey(dynamic keyname) { return PageStorageKey(keyname); } /// 关闭软键盘 static void hideKeyboard(BuildContext context) { FocusScopeNode currentFocus = FocusScope.of(context); if (!currentFocus.hasPrimaryFocus && currentFocus.focusedChild != null) { FocusManager.instance.primaryFocus!.unfocus(); } } /// map 转 json 字符串 static String encodeMap(Map mapData) { return json.encode(mapData); } /// json 字符串转 map static Map decodeJson(jsonStr) { return json.decode(jsonStr.toString()); } /// 判断颜色是否是暗色还是亮色 static num getComputeLuminance(Color color) { return color.computeLuminance(); } /// 随机获取指定返回内的数值 static int getRandomRangeInt(int min, int max) { final Random random = Random(); return min + random.nextInt(max + 1 - min); } /// 无参数的防抖函数 static VoidCallback debounce(VoidCallback func, [ Duration delay = const Duration(milliseconds: 400), ]) { late Timer timer; return () { if (timer.isActive == true) { timer.cancel(); } timer = Timer(delay, () { func.call(); }); }; } /// 带参数的防抖函数 static Function debounceArg(Function func, [ Duration delay = const Duration(milliseconds: 2000), ]) { late Timer timer; return (T arg) { if (timer.isActive == true) { timer.cancel(); } timer = Timer(delay, () { func.call(arg); }); }; } /// 根据现在的小时数,返回 早上好,中午好,下午好,晚上好 这四个字符串 static String formatNowGreetingText() { final now = DateTime.now(); final hour = now.hour; String greeting; if (hour < 11) { greeting = '早上好'; } else if (hour < 13) { greeting = '中午好'; } else if (hour < 18) { greeting = '下午好'; } else if (hour < 24) { greeting = '晚上好'; } else { greeting = '早上好'; } return greeting; } }