Files

54 lines
1.3 KiB
Dart

/// 云同步状态。
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,
);
}