54 lines
1.3 KiB
Dart
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,
|
|
);
|
|
}
|