Files
kuaishai2/lib/features/device/models/device_state.dart
Developer 5d28bf631b chore(project): 初始化项目基础配置文件
- 添加 CodeGraph、Android 和通用 gitignore 配置
- 创建项目元数据文件跟踪 Flutter 项目属性
- 添加 Codex AI 指导文档 AGENTS.md 说明项目架构
- 配置代码分析选项 analysis_options.yaml
- 设置 Android 应用清单权限和 Kiosk 模式配置
- 实现中英文国际化支持 AppLocalizations
- 配置 GoRouter 应用路由导航
- 创建明亮工业控制风格的主题配置 AppTheme
2026-06-04 11:19:44 +08:00

73 lines
2.1 KiB
Dart

/// 设备状态模型
enum DeviceStatus { idle, running, paused, error }
/// 设备状态数据
class DeviceState {
final DeviceStatus status;
final String? currentProgram;
final String? currentPosition;
final int? currentStepNo;
final String? currentStepName;
final int? remainingSeconds;
final double? progress;
final bool lightingOn;
DeviceState({
this.status = DeviceStatus.idle,
this.currentProgram,
this.currentPosition,
this.currentStepNo,
this.currentStepName,
this.remainingSeconds,
this.progress,
this.lightingOn = false,
});
bool get isRunning => status == DeviceStatus.running;
bool get isPaused => status == DeviceStatus.paused;
bool get isIdle => status == DeviceStatus.idle;
bool get hasError => status == DeviceStatus.error;
String statusText() {
switch (status) {
case DeviceStatus.running:
return '运行中';
case DeviceStatus.paused:
return '已暂停';
case DeviceStatus.error:
return '错误';
case DeviceStatus.idle:
return '未运行';
}
}
String formatRemainingTime() {
if (remainingSeconds == null) return '--:--:--';
final hours = remainingSeconds! ~/ 3600;
final minutes = (remainingSeconds! % 3600) ~/ 60;
final seconds = remainingSeconds! % 60;
return '${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}';
}
DeviceState copyWith({
DeviceStatus? status,
String? currentProgram,
String? currentPosition,
int? currentStepNo,
String? currentStepName,
int? remainingSeconds,
double? progress,
bool? lightingOn,
}) {
return DeviceState(
status: status ?? this.status,
currentProgram: currentProgram ?? this.currentProgram,
currentPosition: currentPosition ?? this.currentPosition,
currentStepNo: currentStepNo ?? this.currentStepNo,
currentStepName: currentStepName ?? this.currentStepName,
remainingSeconds: remainingSeconds ?? this.remainingSeconds,
progress: progress ?? this.progress,
lightingOn: lightingOn ?? this.lightingOn,
);
}
}