diff options
Diffstat (limited to 'lib/data/models/vehicle.dart')
-rw-r--r-- | lib/data/models/vehicle.dart | 233 |
1 files changed, 233 insertions, 0 deletions
diff --git a/lib/data/models/vehicle.dart b/lib/data/models/vehicle.dart new file mode 100644 index 0000000..f27b750 --- /dev/null +++ b/lib/data/models/vehicle.dart @@ -0,0 +1,233 @@ +import 'dart:convert'; + +import '../../export.dart'; + +@immutable +class Vehicle { + final double speed; + final double insideTemperature; + final double outsideTemperature; + final int range; + final double fuelLevel; + final int mediaVolume; + final bool isChildLockActiveLeft; + final bool isChildLockActiveRight; + final int engineSpeed; + final int frontLeftTire; + final int frontRightTire; + final int rearLeftTire; + final int rearRightTire; + final bool isAirConditioningActive; + final bool isFrontDefrosterActive; + final bool isRearDefrosterActive; + final bool isRecirculationActive; + final int fanSpeed; + + const Vehicle( + this.speed, + this.insideTemperature, + this.outsideTemperature, + this.range, + this.fuelLevel, + this.mediaVolume, + this.isChildLockActiveLeft, + this.isChildLockActiveRight, + this.engineSpeed, + this.frontLeftTire, + this.frontRightTire, + this.rearLeftTire, + this.rearRightTire, + this.isAirConditioningActive, + this.isFrontDefrosterActive, + this.isRearDefrosterActive, + this.isRecirculationActive, + this.fanSpeed); + + const Vehicle.initial() + : speed = 0, + insideTemperature = 0, + outsideTemperature = 0, + range = 0, + fuelLevel = 0, + mediaVolume = 50, + isChildLockActiveLeft = false, + isChildLockActiveRight = true, + engineSpeed = 0, + frontLeftTire = 33, + frontRightTire = 31, + rearLeftTire = 31, + rearRightTire = 32, + isAirConditioningActive = false, + isFrontDefrosterActive = false, + isRearDefrosterActive = false, + isRecirculationActive = false, + fanSpeed = 0; + + const Vehicle.initialForDebug() + : speed = 60, + insideTemperature = 25, + outsideTemperature = 32.0, + range = 21, + fuelLevel = 49.5, + mediaVolume = 50, + isChildLockActiveLeft = false, + isChildLockActiveRight = true, + engineSpeed = 6500, + frontLeftTire = 33, + frontRightTire = 31, + rearLeftTire = 31, + rearRightTire = 32, + isAirConditioningActive = false, + isFrontDefrosterActive = false, + isRearDefrosterActive = false, + isRecirculationActive = false, + fanSpeed = 0; + + Vehicle copyWith( + {double? speed, + double? insideTemperature, + double? outsideTemperature, + int? range, + double? fuelLevel, + int? mediaVolume, + bool? isChildLockActiveLeft, + bool? isChildLockActiveRight, + int? engineSpeed, + int? frontLeftTire, + int? frontRightTire, + int? rearLeftTire, + int? rearRightTire, + bool? isAirConditioningActive, + bool? isFrontDefrosterActive, + bool? isRearDefrosterActive, + bool? isRecirculationActive, + int? fanSpeed}) { + return Vehicle( + speed ?? this.speed, + insideTemperature ?? this.insideTemperature, + outsideTemperature ?? this.outsideTemperature, + range ?? this.range, + fuelLevel ?? this.fuelLevel, + mediaVolume ?? this.mediaVolume, + isChildLockActiveLeft ?? this.isChildLockActiveLeft, + isChildLockActiveRight ?? this.isChildLockActiveRight, + engineSpeed ?? this.engineSpeed, + frontLeftTire ?? this.frontLeftTire, + frontRightTire ?? this.frontRightTire, + rearLeftTire ?? this.rearLeftTire, + rearRightTire ?? this.rearRightTire, + isAirConditioningActive ?? this.isAirConditioningActive, + isFrontDefrosterActive ?? this.isFrontDefrosterActive, + isRearDefrosterActive ?? this.isRearDefrosterActive, + isRecirculationActive ?? this.isRecirculationActive, + fanSpeed ?? this.fanSpeed); + } + + Map<String, dynamic> toMap() { + return { + 'speed': speed, + 'insideTemperature': insideTemperature, + 'outsideTemperature': outsideTemperature, + 'range': range, + 'fuelLevel': fuelLevel, + 'mediaVolume': mediaVolume, + 'isChildLockActiveLeft': isChildLockActiveLeft, + 'isChildLockActiveRight': isChildLockActiveRight, + 'engineSpeed': engineSpeed, + 'frontLeftTire': frontLeftTire, + 'frontRightTire': frontRightTire, + 'rearLeftTire': rearLeftTire, + 'rearRightTire': rearRightTire, + 'isAirConditioningActive': isAirConditioningActive, + 'isFrontDefrosterActive': isFrontDefrosterActive, + 'isRearDefrosterActive': isRearDefrosterActive, + 'isRecirculationActive': isRecirculationActive, + 'fanSpeed': fanSpeed + }; + } + + factory Vehicle.fromMap(Map<String, dynamic> map) { + return Vehicle( + map['speed']?.toDouble() ?? 0.0, + map['insideTemperature']?.toDouble() ?? 0.0, + map['outsideTemperature']?.toDouble() ?? 0.0, + map['range']?.toInt() ?? 0, + map['fuelLevel']?.toDouble() ?? 0.0, + map['mediaVolume']?.toInt() ?? 0, + map['isChildLockActiveLeft'] ?? false, + map['isChildLockActiveRight'] ?? false, + map['engineSpeed']?.toInt() ?? 0, + map['frontLeftTire']?.toInt() ?? 0, + map['frontRightTire']?.toInt() ?? 0, + map['rearLeftTire']?.toInt() ?? 0, + map['rearRightTire']?.toInt() ?? 0, + map['isAirConditioningActive'] ?? false, + map['isFrontDefrosterActive'] ?? false, + map['isRearDefrosterActive'] ?? false, + map['isRecirculationActive'] ?? false, + map['fanSpeed'] ?? 0, + ); + } + + String toJson() => json.encode(toMap()); + + factory Vehicle.fromJson(String source) => + Vehicle.fromMap(json.decode(source)); + + @override + String toString() { + return 'Vehicle(speed: $speed, insideTemperature: $insideTemperature, outsideTemperature: $outsideTemperature, range: $range, fuelLevel: $fuelLevel, mediaVolume: $mediaVolume, isChildLockActiveLeft: $isChildLockActiveLeft, isChildLockActiveRight: $isChildLockActiveRight, engineSpeed: $engineSpeed, frontLeftTire: $frontLeftTire, frontRightTire: $frontRightTire, rearLeftTire: $rearLeftTire, rearRightTire: $rearRightTire, isAirConditioningActive: $isAirConditioningActive, isFrontDefrosterActive: $isFrontDefrosterActive, isRearDefrosterActive: $isRearDefrosterActive, isRecirculationActive: $isRecirculationActive,fanSpeed:$fanSpeed)'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + + return other is Vehicle && + other.speed == speed && + other.insideTemperature == insideTemperature && + other.outsideTemperature == outsideTemperature && + other.range == range && + other.fuelLevel == fuelLevel && + other.mediaVolume == mediaVolume && + other.isChildLockActiveLeft == isChildLockActiveLeft && + other.isChildLockActiveRight == isChildLockActiveRight && + other.engineSpeed == engineSpeed && + other.frontLeftTire == frontLeftTire && + other.frontRightTire == frontRightTire && + other.rearLeftTire == rearLeftTire && + other.rearRightTire == rearRightTire && + other.isAirConditioningActive == isAirConditioningActive && + other.isFrontDefrosterActive == isFrontDefrosterActive && + other.isRearDefrosterActive == isRearDefrosterActive && + other.isRecirculationActive == isRecirculationActive && + other.fanSpeed == fanSpeed; + } + + @override + int get hashCode { + return speed.hashCode ^ + insideTemperature.hashCode ^ + outsideTemperature.hashCode ^ + range.hashCode ^ + fuelLevel.hashCode ^ + mediaVolume.hashCode ^ + isChildLockActiveLeft.hashCode ^ + isChildLockActiveRight.hashCode ^ + engineSpeed.hashCode ^ + frontLeftTire.hashCode ^ + frontRightTire.hashCode ^ + rearLeftTire.hashCode ^ + rearRightTire.hashCode ^ + isAirConditioningActive.hashCode ^ + isFrontDefrosterActive.hashCode ^ + isRearDefrosterActive.hashCode ^ + isRecirculationActive.hashCode ^ + fanSpeed.hashCode; + } +// } +// / class VehicleNotifier extends StateNotifier<Vehicle> { +// // VehicleNotifier() : super(Vehicle()); + +// // } +} |