Skip to content

Commit

Permalink
feat: added settargettemperature
Browse files Browse the repository at this point in the history
  • Loading branch information
Suraj Adhikari committed Feb 15, 2022
1 parent f254bd9 commit 31c5aba
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 1 deletion.
6 changes: 6 additions & 0 deletions lib/providers/thermostat_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,12 @@ class ThermostatProvider extends DeviceProvider {
double? get getAmbientTemperatureState =>
getThermostatTrait()?.stateWhereType<AmbientTemperature>().value;

TemperatureRange? get getCoolTemperatureRange =>
getThermostatTrait()?.propertyWhereType<CoolSetPointRange>().value;

TemperatureRange? get getHeatTemperatureRange =>
getThermostatTrait()?.propertyWhereType<HeatSetPointRange>().value;

AvailableFanMode get getFanModeState {
return getThermostatTrait()?.stateWhereType<FanMode>().value;
}
Expand Down
79 changes: 79 additions & 0 deletions lib/traits/thermostat_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,90 @@ class ThermostatWidget extends StatelessWidget with ToastNotifications {
],
),
_fanMode(context),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Center(
child: _setTemperature(),
)
],
),
],
);
}
}

Widget _setTemperature() {
final currentMode = _thermostatProvider.getModeState;
if (currentMode != AvailableThermostatMode.COOL ||
currentMode != AvailableThermostatMode.HEAT ||
currentMode != AvailableThermostatMode.AUTO) {
return Container();
}
final coolTemperatureRange = _thermostatProvider.getCoolTemperatureRange;
final heatTemperatureRange = _thermostatProvider.getHeatTemperatureRange;

final coolSlider = Slider(
value: _thermostatProvider.getTargetTemperatureState!,
min: coolTemperatureRange!.min,
max: coolTemperatureRange.max,
divisions: (coolTemperatureRange.max - coolTemperatureRange.min).toInt(),
onChanged: (value) => _thermostatProvider.setPointAction(
_thermostatProvider.deviceDetail!.id, value),
);

final heatSlider = Slider(
value: _thermostatProvider.getTargetTemperatureState!,
min: heatTemperatureRange!.min,
max: heatTemperatureRange.max,
divisions: (heatTemperatureRange.max - heatTemperatureRange.min).toInt(),
onChanged: (value) => _thermostatProvider.setPointAction(
_thermostatProvider.deviceDetail!.id, value),
);

final bothSliders = Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Cool',
style: TextStyle(color: _textColor),
),
SizedBox(width: 8.0),
coolSlider,
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Heat',
style: TextStyle(color: _textColor),
),
SizedBox(width: 8.0),
heatSlider,
],
),
],
);

final temperatureRange = (currentMode == AvailableThermostatMode.COOL)
? _thermostatProvider.getCoolTemperatureRange
: _thermostatProvider.getHeatTemperatureRange;
final maxRange = temperatureRange?.max;
final minRange = temperatureRange?.min;
if ((maxRange == null || minRange == null) || (maxRange == minRange)) {
return Container();
}
if (currentMode == AvailableThermostatMode.AUTO) {
return bothSliders;
}
return (currentMode == AvailableThermostatMode.COOL)
? coolSlider
: heatSlider;
}

Widget _fanMode(BuildContext context) {
final selectedFanMode = _thermostatProvider.getFanModeState;
return Card(
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ dependencies:
yonomi_platform_sdk:
git:
url: https://github.com/Yonomi/yonomi-sdk-dart
ref: main
ref: DX-245_updates

dev_dependencies:
mockito: ^5.0.15
Expand Down

0 comments on commit 31c5aba

Please sign in to comment.