diff options
author | Scott Murray <scott.murray@konsulko.com> | 2023-12-08 10:28:48 +0900 |
---|---|---|
committer | Scott Murray <scott.murray@konsulko.com> | 2023-12-08 10:54:30 +0900 |
commit | 71d46d03850653c0229c678de197c6f94fceb477 (patch) | |
tree | b91915e70c9092d304d3172b93eb61ffb0c287c5 /lib/presentation/screens/hvac/hvac_content.dart | |
parent | dca5f5bc58fc3b25972bedc82827b71300d66adc (diff) |
More signaling fixes
Changes:
- Fixed parsing of engine speed from databroker response to use
uint32 again to match VSS type.
- Shifted engine speed definitions in Vehicle class next to
vehicle speed since that seems a bit saner than having it down at
the bottom with the temperature values.
- Removed duplicate temperature state from temperature control
widget, and pushed the use of the providers from the HVAC widget.
The existing scheme was somewhat broken with respect to having the
values managed with RiverPod, e.g. new values from external updates
would not show up until switching away and back to the HVAC tab.
- Moved HVAC "SYNC" button state into the Vehicle state class to
manage it with RiverPod, and allow use from both the HVAC and
temperature widgets so that the expected behavior can actually be
implemented.
- Fixed brace usage in a couple of debugPrint statements.
Bug-AGL: SPEC-4999
Change-Id: I07ea49d20fedca47e6f9e54f45ad34296e0a873c
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Diffstat (limited to 'lib/presentation/screens/hvac/hvac_content.dart')
-rw-r--r-- | lib/presentation/screens/hvac/hvac_content.dart | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/lib/presentation/screens/hvac/hvac_content.dart b/lib/presentation/screens/hvac/hvac_content.dart index 73fd439..e541efd 100644 --- a/lib/presentation/screens/hvac/hvac_content.dart +++ b/lib/presentation/screens/hvac/hvac_content.dart @@ -13,15 +13,8 @@ class HVACState extends ConsumerState<HVAC> { bool isFanFocusLeftBottomSelected = true; bool isFanFocusRightBottomSelected = false; - late bool isACSelected; - bool isSYNCSelected = true; - late bool isFrontDefrostSelected; bool isAutoSelected = true; - late bool isRecirculationSelected; - late bool isRearDefrostSelected; - int temperatureLeft = 26; - int temperatureRight = 26; @override void initState() { super.initState(); @@ -52,14 +45,12 @@ class HVACState extends ConsumerState<HVAC> { @override Widget build(BuildContext context) { - final vehicle = ref.watch(vehicleProvider.select((vehicle) => vehicle)); - isACSelected = vehicle.isAirConditioningActive; - isFrontDefrostSelected = vehicle.isFrontDefrosterActive; - isRearDefrostSelected = vehicle.isRearDefrosterActive; - isRecirculationSelected = vehicle.isRecirculationActive; + bool isACSelected = ref.watch(vehicleProvider.select((vehicle) => vehicle.isAirConditioningActive)); + bool isFrontDefrostSelected = ref.watch(vehicleProvider.select((vehicle) => vehicle.isFrontDefrosterActive)); + bool isRearDefrostSelected = ref.watch(vehicleProvider.select((vehicle) => vehicle.isRearDefrosterActive)); + bool isRecirculationSelected = ref.watch(vehicleProvider.select((vehicle) => vehicle.isRecirculationActive)); + bool isSYNCSelected = ref.watch(vehicleProvider.select((vehicle) => vehicle.temperatureSynced)); Size size = MediaQuery.sizeOf(context); - temperatureLeft = vehicle.driverTemperature; - temperatureRight = vehicle.passengerTemperature; return Column( crossAxisAlignment: CrossAxisAlignment.stretch, @@ -155,14 +146,8 @@ class HVACState extends ConsumerState<HVAC> { Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - TemperatureControl( - temperature: temperatureLeft, - side: Side.left, - ), - TemperatureControl( - temperature: temperatureRight, - side: Side.right, - ) + TemperatureControl(side: Side.left), + TemperatureControl(side: Side.right) ], ), const SizedBox( @@ -190,9 +175,15 @@ class HVACState extends ConsumerState<HVAC> { )), ClimateControls( onPressed: () { - setState(() { - isSYNCSelected = !isSYNCSelected; - }); + if (!isSYNCSelected) { + int temperature = ref.read(vehicleProvider.select((vehicle) => vehicle.driverTemperature)); + ref + .read(vehicleProvider.notifier) + .setTemperature(side: Side.right, value: temperature); + } + ref + .read(vehicleProvider.notifier) + .setTemperatureSynced(!isSYNCSelected); }, isSelected: isSYNCSelected, child: Text( |