You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
214 lines
6.2 KiB
214 lines
6.2 KiB
4 years ago
|
|
||
|
import 'dart:io';
|
||
|
|
||
|
import 'package:huixiang/generated/l10n.dart';
|
||
|
import 'package:intl/intl.dart';
|
||
|
import 'package:path_provider/path_provider.dart';
|
||
|
|
||
|
class AppUtils {
|
||
|
|
||
|
static String getAge(DateTime brt) {
|
||
|
int age = 0;
|
||
|
DateTime dateTime = DateTime.now();
|
||
|
if (dateTime.isBefore(brt)) {
|
||
|
//出生日期晚于当前时间,无法计算
|
||
|
return '出生日期不正確';
|
||
|
}
|
||
|
int yearNow = dateTime.year; //当前年份
|
||
|
int monthNow = dateTime.month; //当前月份
|
||
|
int dayOfMonthNow = dateTime.day; //当前日期
|
||
|
|
||
|
int yearBirth = brt.year;
|
||
|
int monthBirth = brt.month;
|
||
|
int dayOfMonthBirth = brt.day;
|
||
|
age = yearNow - yearBirth; //计算整岁数
|
||
|
if (monthNow <= monthBirth) {
|
||
|
if (monthNow == monthBirth) {
|
||
|
if (dayOfMonthNow < dayOfMonthBirth) age--; //当前日期在生日之前,年龄减一
|
||
|
} else {
|
||
|
age--; //当前月份在生日之前,年龄减一
|
||
|
}
|
||
|
}
|
||
|
return age.toString();
|
||
|
}
|
||
|
|
||
|
static String getAgeByString(String birth) {
|
||
|
if (birth == null || birth == "") return "";
|
||
|
int age = 0;
|
||
|
DateTime brt = DateFormat("yyyy-MM-dd").parse(birth);
|
||
|
|
||
|
DateTime dateTime = DateTime.now();
|
||
|
if (dateTime.isBefore(brt)) {
|
||
|
//出生日期晚于当前时间,无法计算
|
||
|
return '出生日期不正確';
|
||
|
}
|
||
|
int yearNow = dateTime.year; //当前年份
|
||
|
int monthNow = dateTime.month; //当前月份
|
||
|
int dayOfMonthNow = dateTime.day; //当前日期
|
||
|
|
||
|
int yearBirth = brt.year;
|
||
|
int monthBirth = brt.month;
|
||
|
int dayOfMonthBirth = brt.day;
|
||
|
age = yearNow - yearBirth; //计算整岁数
|
||
|
if (monthNow <= monthBirth) {
|
||
|
if (monthNow == monthBirth) {
|
||
|
if (dayOfMonthNow < dayOfMonthBirth) age--; //当前日期在生日之前,年龄减一
|
||
|
} else {
|
||
|
age--; //当前月份在生日之前,年龄减一
|
||
|
}
|
||
|
}
|
||
|
return age.toString();
|
||
|
}
|
||
|
|
||
|
static String getHourMinuteByString(String birth) {
|
||
|
if (birth == null || birth == "") return "";
|
||
|
DateTime brt = DateFormat("yyyy-MM-dd HH:mm:ss").parse(birth);
|
||
|
return DateFormat("HH:mm").format(brt);
|
||
|
}
|
||
|
|
||
|
static String getHourMinuteAfter30mByString(String birth) {
|
||
|
if (birth == null || birth == "") return "";
|
||
|
DateTime brt = DateFormat("yyyy-MM-dd HH:mm:ss").parse(birth);
|
||
|
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(brt.millisecondsSinceEpoch + 30 * 60 * 1000);
|
||
|
return DateFormat("HH:mm").format(dateTime); //分钟
|
||
|
}
|
||
|
|
||
|
/// 获取缓存大小
|
||
|
static Future<int> total() async {
|
||
|
Directory tempDir = await getTemporaryDirectory();
|
||
|
if (tempDir == null) return 0;
|
||
|
int total = await _reduce(tempDir);
|
||
|
return total;
|
||
|
}
|
||
|
|
||
|
/// 清除缓存
|
||
|
static Future<void> clear() async {
|
||
|
Directory tempDir = await getTemporaryDirectory();
|
||
|
if (tempDir == null) return 0;
|
||
|
await _delete(tempDir);
|
||
|
}
|
||
|
|
||
|
/// 递归缓存目录,计算缓存大小
|
||
|
static Future<int> _reduce(FileSystemEntity file) async {
|
||
|
/// 如果是一个文件,则直接返回文件大小
|
||
|
if (file is File) {
|
||
|
int length = await file.length();
|
||
|
return length;
|
||
|
}
|
||
|
/// 如果是目录,则遍历目录并累计大小
|
||
|
if (file is Directory) {
|
||
|
final List<FileSystemEntity> children = file.listSync();
|
||
|
int total = 0;
|
||
|
if (children != null && children.isNotEmpty)
|
||
|
for (final FileSystemEntity child in children)
|
||
|
total += await _reduce(child);
|
||
|
return total;
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
/// 递归删除缓存目录和文件
|
||
|
static Future<void> _delete(FileSystemEntity file) async {
|
||
|
if (file is Directory) {
|
||
|
final List<FileSystemEntity> children = file.listSync();
|
||
|
for (final FileSystemEntity child in children) {
|
||
|
await child.delete(recursive: true);
|
||
|
}
|
||
|
} else {
|
||
|
await file.delete();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// 递归删除缓存目录和文件
|
||
|
static Future<void> deleteDirectory(FileSystemEntity file) async {
|
||
|
if (file is Directory) {
|
||
|
final List<FileSystemEntity> children = file.listSync();
|
||
|
for (final FileSystemEntity child in children) {
|
||
|
child.deleteSync(recursive: true);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
static String statusText(context,
|
||
|
refundStatus, orderStatus, payStatus, sendStatus, isTakeOut) {
|
||
|
String statusText = "";
|
||
|
if (isTakeOut == 0) {
|
||
|
if (payStatus == 0) {
|
||
|
statusText = S.of(context).daizhifu;
|
||
|
} else {
|
||
|
statusText = S.of(context).yizhifu;
|
||
|
switch (orderStatus) {
|
||
|
case 2:
|
||
|
statusText = S.of(context).shangjiazhengzaipeican;
|
||
|
break;
|
||
|
case 3:
|
||
|
statusText = S.of(context).daiqucan;
|
||
|
break;
|
||
|
case 4:
|
||
|
statusText = S.of(context).yiwancheng;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
} else if (isTakeOut == 1) {
|
||
|
if (payStatus == 0) {
|
||
|
statusText = S.of(context).daizhifu;
|
||
|
} else {
|
||
|
statusText = S.of(context).yizhifu;
|
||
|
if (orderStatus < 4) {
|
||
|
switch (sendStatus) {
|
||
|
case 1:
|
||
|
statusText = S.of(context).zhengzaihujiaoqishou;
|
||
|
break;
|
||
|
case 2:
|
||
|
statusText = S.of(context).quhuozhong;
|
||
|
break;
|
||
|
case 3:
|
||
|
statusText = S.of(context).peisongzhong;
|
||
|
break;
|
||
|
case 4:
|
||
|
statusText = S.of(context).yisongda;
|
||
|
break;
|
||
|
}
|
||
|
} else {
|
||
|
switch (orderStatus) {
|
||
|
case 4:
|
||
|
statusText = S.of(context).yiwancheng;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
} else if (isTakeOut == 2) {
|
||
|
if (payStatus == 0) {
|
||
|
statusText = S.of(context).daizhifu;
|
||
|
} else {
|
||
|
statusText = S.of(context).yizhifu;
|
||
|
if (orderStatus < 4) {
|
||
|
switch (sendStatus) {
|
||
|
case 1:
|
||
|
statusText = S.of(context).yifahuo;
|
||
|
break;
|
||
|
case 4:
|
||
|
statusText = S.of(context).yisongda;
|
||
|
break;
|
||
|
}
|
||
|
} else {
|
||
|
switch (orderStatus) {
|
||
|
case 4:
|
||
|
statusText = S.of(context).yiwancheng;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (refundStatus == 1) {
|
||
|
statusText = S.of(context).yituikuan;
|
||
|
}
|
||
|
if (orderStatus == 5) {
|
||
|
statusText = S.of(context).yiquxiao;
|
||
|
}
|
||
|
return statusText;
|
||
|
}
|
||
|
|
||
|
}
|