50 lines
1.5 KiB
Dart
50 lines
1.5 KiB
Dart
import 'package:equatable/equatable.dart';
|
||
|
||
/// 倒车影像数据契约:将来嵌入式实时回传的字段就映射到这里。
|
||
///
|
||
/// 嵌入式协议对齐清单(按这些语义推送即可):
|
||
/// - gear:挡位。0=停车/空挡, 1=前进, 2=倒车。
|
||
/// - steeringAngle:当前转向角,单位度,范围 -45(左)~+45(右),0=正后。
|
||
/// - speed:当前实际速度,单位 m/s(>=0),预留给引导线流速等扩展动画。
|
||
/// - rearDistanceCm:后部障碍物距离(厘米),null 表示无测距传感器。
|
||
class ReverseCameraData extends Equatable {
|
||
final int gear;
|
||
final double steeringAngle;
|
||
final double speed;
|
||
final int? rearDistanceCm;
|
||
|
||
const ReverseCameraData({
|
||
this.gear = 0,
|
||
this.steeringAngle = 0,
|
||
this.speed = 0,
|
||
this.rearDistanceCm,
|
||
});
|
||
|
||
/// 初始/待机态:不显示倒车引导线。
|
||
const ReverseCameraData.idle()
|
||
: gear = 0,
|
||
steeringAngle = 0,
|
||
speed = 0,
|
||
rearDistanceCm = null;
|
||
|
||
/// 是否处于倒车挡(引导线显示的唯一开关)。
|
||
bool get isReversing => gear == 2;
|
||
|
||
ReverseCameraData copyWith({
|
||
int? gear,
|
||
double? steeringAngle,
|
||
double? speed,
|
||
int? rearDistanceCm,
|
||
}) {
|
||
return ReverseCameraData(
|
||
gear: gear ?? this.gear,
|
||
steeringAngle: steeringAngle ?? this.steeringAngle,
|
||
speed: speed ?? this.speed,
|
||
rearDistanceCm: rearDistanceCm ?? this.rearDistanceCm,
|
||
);
|
||
}
|
||
|
||
@override
|
||
List<Object?> get props => [gear, steeringAngle, speed, rearDistanceCm];
|
||
}
|