优化主界面显示

This commit is contained in:
DelLevin-Home
2026-05-25 18:29:17 +08:00
parent da952f3468
commit b36f50827f
3 changed files with 9 additions and 26 deletions

View File

@@ -26,14 +26,12 @@ void main() async {
// 初始化用户偏好设置
await UserPrefs.init();
// 初始化数据库
final appProvider = AppProvider();
await appProvider.initDatabase();
appProvider.initMainTabIndex();
// 以下初始化不阻塞界面显示
// 先显示界面,后台加载数据
runApp(MyApp(appProvider: appProvider));
unawaited(appProvider.initDatabase().then((_) => appProvider.initMainTabIndex()));
unawaited(_initAutoBackup());
unawaited(_initUsageStats());
runApp(MyApp(appProvider: appProvider));
}
/// 初始化自动备份

View File

@@ -58,7 +58,7 @@ class _ServerSyncPageState extends State<ServerSyncPage> {
final exp = _prefs.syncExpiresAt;
if (exp.isNotEmpty) {
try {
final dt = DateTime.parse(exp);
final dt = DateTime.parse(exp).add(const Duration(hours: 8));
_expiresText = '有效期至 ${dt.year}-${dt.month.toString().padLeft(2, '0')}-${dt.day.toString().padLeft(2, '0')} '
'${dt.hour.toString().padLeft(2, '0')}:${dt.minute.toString().padLeft(2, '0')}';
} catch (_) {

View File

@@ -17,7 +17,7 @@ class UsageStatsService with WidgetsBindingObserver {
final UserPrefs _prefs = UserPrefs();
/// 统计服务器地址,发布前替换为实际地址,置空则禁用
static String serverUrl = 'http://192.168.31.48:5000';
static String serverUrl = 'http://api.mooknote.iletter.top/';
Timer? _heartbeatTimer;
bool _started = false;
@@ -54,23 +54,6 @@ class UsageStatsService with WidgetsBindingObserver {
WidgetsBinding.instance.removeObserver(this);
}
/// 获取统计信息(总用户数 / 在线数)
static Future<Map<String, dynamic>?> fetchStats() async {
if (serverUrl.isEmpty) return null;
try {
final response = await http
.get(Uri.parse('$serverUrl/api/stats'))
.timeout(const Duration(seconds: 5));
if (response.statusCode == 200) {
return jsonDecode(response.body) as Map<String, dynamic>;
}
} catch (_) {
// 静默失败
}
return null;
}
// ─── 内部方法 ──────────────────────────────────────────────────────────
/// 确保设备有匿名ID
@@ -106,8 +89,10 @@ class UsageStatsService with WidgetsBindingObserver {
headers: {'Content-Type': 'application/json'},
body: jsonEncode({
'device_hash': deviceId,
'device_type': Platform.operatingSystem, // android/ios/windows/macos/linux
'device_name': '${Platform.operatingSystem} ${Platform.operatingSystemVersion}',
'device_type':
Platform.operatingSystem, // android/ios/windows/macos/linux
'device_name':
'${Platform.operatingSystem} ${Platform.operatingSystemVersion}',
}),
)
.timeout(const Duration(seconds: 5));