feat(locale): 实现 App 启动时语言和时区自动设置
- 新增系统语言/时区读取工具函数 - SessionStore 扩展支持时区存储 - 启动流程自动检测并保存系统语言/时区 - 注册时传递语言/时区到后端 - 登录后从服务器同步语言/时区
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
import '../../l10n/app_localizations.dart';
|
||||
|
||||
String formatRelativeTime(BuildContext context, DateTime dateTime) {
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
final diff = DateTime.now().difference(dateTime);
|
||||
if (diff.inMinutes < 1) return l10n.timeJustNow;
|
||||
if (diff.inHours < 1) return l10n.timeMinutesAgo(diff.inMinutes);
|
||||
if (diff.inDays < 1) return l10n.timeHoursAgo(diff.inHours);
|
||||
if (diff.inDays < 30) return l10n.timeDaysAgo(diff.inDays);
|
||||
return '${dateTime.month}/${dateTime.day}';
|
||||
}
|
||||
|
||||
String formatCompactLocalDateTime(String isoString) {
|
||||
final dateTime = DateTime.parse(isoString).toLocal();
|
||||
final now = DateTime.now();
|
||||
final timeText =
|
||||
'${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}';
|
||||
|
||||
if (now.year == dateTime.year &&
|
||||
now.month == dateTime.month &&
|
||||
now.day == dateTime.day) {
|
||||
return timeText;
|
||||
}
|
||||
|
||||
final dateText =
|
||||
'${dateTime.year}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')}';
|
||||
return '$dateText $timeText';
|
||||
}
|
||||
Reference in New Issue
Block a user