From 6df78100fea03fccf1954a2f218c185a7d4e8920 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Fri, 21 Feb 2025 19:27:48 +0300 Subject: [PATCH] add suspension off mode --- lib/domain/data_source/models/suspension_mode.dart | 10 ++++++++++ lib/l10n/arb/app_en.arb | 1 + lib/l10n/arb/app_ru.arb | 1 + .../general/widgets/suspension_control_button.dart | 1 + .../general/widgets/suspension_control_dialog.dart | 1 + 5 files changed, 14 insertions(+) diff --git a/lib/domain/data_source/models/suspension_mode.dart b/lib/domain/data_source/models/suspension_mode.dart index 5f59593..3ea2564 100644 --- a/lib/domain/data_source/models/suspension_mode.dart +++ b/lib/domain/data_source/models/suspension_mode.dart @@ -7,6 +7,7 @@ import 'package:meta/meta.dart'; sealed class SuspensionMode with EquatableMixin { const SuspensionMode({required this.id}); + const factory SuspensionMode.off() = _OffSuspensionMode; const factory SuspensionMode.low() = _LowSuspensionMode; const factory SuspensionMode.highway() = _HighwaySuspensionMode; const factory SuspensionMode.offRoad() = _OffRoadSuspensionMode; @@ -19,6 +20,7 @@ sealed class SuspensionMode with EquatableMixin { } static const List values = [ + SuspensionMode.off(), SuspensionMode.low(), SuspensionMode.highway(), SuspensionMode.offRoad(), @@ -34,12 +36,14 @@ sealed class SuspensionMode with EquatableMixin { static SuspensionMode get random => values[Random().nextInt(values.length)]; T when({ + required T Function() off, required T Function() low, required T Function() highway, required T Function() offRoad, required T Function(int value) manual, }) { return switch (this) { + _OffSuspensionMode() => off(), _LowSuspensionMode() => low(), _HighwaySuspensionMode() => highway(), _OffRoadSuspensionMode() => offRoad(), @@ -49,12 +53,14 @@ sealed class SuspensionMode with EquatableMixin { T maybeWhen({ required T Function() orElse, + T Function()? off, T Function()? low, T Function()? highway, T Function()? offRoad, T Function(int value)? manual, }) { return switch (this) { + _OffSuspensionMode() => off?.call() ?? orElse(), _LowSuspensionMode() => low?.call() ?? orElse(), _HighwaySuspensionMode() => highway?.call() ?? orElse(), _OffRoadSuspensionMode() => offRoad?.call() ?? orElse(), @@ -67,6 +73,10 @@ sealed class SuspensionMode with EquatableMixin { List get props => [id]; } +final class _OffSuspensionMode extends SuspensionMode { + const _OffSuspensionMode() : super(id: 0); +} + final class _LowSuspensionMode extends SuspensionMode { const _LowSuspensionMode() : super(id: 1); } diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index e2c69f2..dcda7d5 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -304,6 +304,7 @@ "errorSwitchingSuspensionModeMessage": "Error switching suspension mode", "errorGettingManualValueMessage": "Error getting manual mode value", "errorSettingManualValueMessage": "Error setting manual mode value", + "offSuspensionMode": "Off", "lowSuspensionMode": "Low", "highwaySuspensionMode": "Highway", "offRoadSuspensionMode": "Off road", diff --git a/lib/l10n/arb/app_ru.arb b/lib/l10n/arb/app_ru.arb index 8cb39c1..ae44672 100644 --- a/lib/l10n/arb/app_ru.arb +++ b/lib/l10n/arb/app_ru.arb @@ -304,6 +304,7 @@ "errorSwitchingSuspensionModeMessage": "Ошибка при переключении режима подвески", "errorGettingManualValueMessage": "Ошибка при получении значения ручного режима", "errorSettingManualValueMessage": "Ошибка при установке значения ручного режима", + "offSuspensionMode": "Выключен", "lowSuspensionMode": "Заниженный", "highwaySuspensionMode": "Шоссе", "offRoadSuspensionMode": "Оффроуд", diff --git a/lib/presentation/screens/general/widgets/suspension_control_button.dart b/lib/presentation/screens/general/widgets/suspension_control_button.dart index c9c0019..689bc2a 100644 --- a/lib/presentation/screens/general/widgets/suspension_control_button.dart +++ b/lib/presentation/screens/general/widgets/suspension_control_button.dart @@ -24,6 +24,7 @@ class SuspensionControlButton extends StatelessWidget { label: Center( child: Text( state.payload.when( + off: () => context.l10n.offSuspensionMode, low: () => context.l10n.lowSuspensionMode, highway: () => context.l10n.highwaySuspensionMode, offRoad: () => context.l10n.offRoadSuspensionMode, diff --git a/lib/presentation/screens/general/widgets/suspension_control_dialog.dart b/lib/presentation/screens/general/widgets/suspension_control_dialog.dart index f7db50c..b9187e1 100644 --- a/lib/presentation/screens/general/widgets/suspension_control_dialog.dart +++ b/lib/presentation/screens/general/widgets/suspension_control_dialog.dart @@ -78,6 +78,7 @@ class _SuspensionControlDialogState extends State { }, title: Text( mode.when( + off: () => context.l10n.offSuspensionMode, low: () => context.l10n.lowSuspensionMode, highway: () => context.l10n.highwaySuspensionMode, offRoad: () => context.l10n.offRoadSuspensionMode,