diff options
author | Lisandro Pérez Meyer <lpmeyer@ics.com> | 2023-11-14 17:20:58 -0300 |
---|---|---|
committer | Lisandro Pérez Meyer <lpmeyer@ics.com> | 2023-11-14 17:31:12 -0300 |
commit | 70ec8a79a121471a004e7e4c23157d10157e136f (patch) | |
tree | a4f9c0a4fac4e4274ec4324a289b6ef62e1c5653 /lib/data/data_providers/hybrid_notifier.dart |
Initial cleanup push.
Based on agldemo2024 on commit 2a5dc04d801134338150c3f6afc67eaa65599763
Disable device preview.
Disable Lottie animation.
The original commit was b3c493c340fcb4bb0a937692838fc830bec3e9ea
but I am just keeping this change, because the json did not really
needed to change. I think.
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
Diffstat (limited to 'lib/data/data_providers/hybrid_notifier.dart')
-rw-r--r-- | lib/data/data_providers/hybrid_notifier.dart | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/lib/data/data_providers/hybrid_notifier.dart b/lib/data/data_providers/hybrid_notifier.dart new file mode 100644 index 0000000..a19bf58 --- /dev/null +++ b/lib/data/data_providers/hybrid_notifier.dart @@ -0,0 +1,91 @@ +import '../../export.dart'; + +class HybridNotifier extends StateNotifier<Hybrid> { + HybridNotifier(super.state); + + void setHybridState(HybridState hybridState) { + switch (hybridState) { + case HybridState.idle: + state = state.copyWith( + topArrowState: ArrowState.blue, + leftArrowState: ArrowState.blue, + rightArrowState: ArrowState.blue, + batteryState: BatteryState.white, + ); + break; + case HybridState.engineOutput: + state = state.copyWith( + topArrowState: ArrowState.red, + leftArrowState: ArrowState.red, + rightArrowState: ArrowState.blue, + batteryState: BatteryState.red, + ); + break; + case HybridState.regenerativeBreaking: + state = state.copyWith( + topArrowState: ArrowState.blue, + leftArrowState: ArrowState.blue, + rightArrowState: ArrowState.green, + batteryState: BatteryState.green); + + break; + case HybridState.baterryOutput: + state = state.copyWith( + topArrowState: ArrowState.blue, + leftArrowState: ArrowState.blue, + rightArrowState: ArrowState.yellow, + batteryState: BatteryState.yellow); + break; + default: + } + state = state.copyWith(hybridState: hybridState); + } + + void updateHybridState() { + // Variable to store the current state + HybridState currentState = state.hybridState; + + // Variable to store the previous state + HybridState previousState = currentState; + + // Variable to store the average speed value + double avgSpeed = 0.0; + + // Variable for storing the average value of RPM + double avgRpm = 0.0; + + // Variable to store the brake value state + bool brake = false; + + // Collect 10 samples + for (int i = 0; i < 10; i++) { + // Get the current values for speed, engine rpm and brake status + + // speed = vehicleProvider(); + // rpm = _rpmFromServer(); + // brake = _brakeFromServer(); + + // Calculate the average speed value + // avgSpeed = (avgSpeed * (i + 1) + speed) / (i + 2); + + // Calculate the average engine rpm + // avgRpm = (avgRpm * (i + 1) + rpm) / (i + 2); + } + + // define new state + // if (avgSpeed == 0 && avgRpm == 0) { + // currentState = HybridState.idle; + // } else if (avgRpm > 0 && avgSpeed > 0) { + // currentState = HybridState.engineOutput; + // } else if (avgRpm == 0 && brake) { + // currentState = HybridState.regenerativeBreaking; + // } else if (avgSpeed > 0 && avgRpm <= avgSpeed) { + // currentState = HybridState.baterryOutput; + // } + + // Zaktualizuj stan + if (currentState != previousState) { + state = state.copyWith(hybridState: currentState); + } + } +} |