feat: icon-based status strip with search and log actions
This commit is contained in:
1 parent
0423027e97
commit
2a307b2f48
3 files changed
+218
-13
No files matched your search
@@ -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,
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user