feat: icon-based status strip with search and log actions

This commit is contained in:
pluv committed 2026-10-24 01:39:07 +08:00
1 parent 0423027e97
commit 2a307b2f48
3 files changed
+218 -13

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
/// 云同步状态。
enum SyncState {
/// 尚未建立同步(未登录或未配置)。
unknown,
/// 正在同步。
syncing,
/// 最近一次同步成功。
success,
/// 最近一次同步失败。
failed,
}
/// 顶部状态条所需的数据。
///
/// 目前由 [AppStatus.sample] 提供示例值;接入内核与同步服务后改为真实数据。
class AppStatus {
const AppStatus({
required this.streakDays,
required this.todayItems,
required this.sync,
});
/// 连续学习天数(计划接力)。
final int streakDays;
/// 今日涉及的条目总数,等于「已完成 + 待完成」,与今日计划卡里的
/// 「待复习 + 待新识」不是同一个口径。
final int todayItems;
/// 云同步状态。
final SyncState sync;
String get streakLabel => '计划接力: $streakDays 天';
String get todayLabel => '今日记忆: $todayItems 条目';
String get syncLabel => switch (sync) {
SyncState.unknown => '云同步: 未连接',
SyncState.syncing => '云同步: 同步中',
SyncState.success => '云同步: 成功',
SyncState.failed => '云同步: 失败',
};
/// 示例数据。今日 59 条 = 已完成 6 条 + 待完成 53 条。
static const AppStatus sample = AppStatus(
streakDays: 4,
todayItems: 59,
sync: SyncState.success,
);
}