Last active
April 13, 2020 11:44
-
-
Save tkuenneth/563ed77d956b02d37c525957e2622c40 to your computer and use it in GitHub Desktop.
This file relies on converter.dart
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library model; | |
import 'package:temperatureconverter/src/converter.dart'; | |
enum temperatureUnit { degreesCelsius, degreesFahrenheit, kelvin } | |
temperatureUnit enumFor(String str) { | |
for (var v in temperatureUnit.values) { | |
if (v.toString().endsWith(str)) { | |
return v; | |
} | |
} | |
return null; | |
} | |
class Model { | |
var _inUnit; | |
var _outUnit; | |
var _inTemperature; | |
var _outTemperatureAsString; | |
Model() { | |
_inUnit = temperatureUnit.degreesCelsius; | |
_inTemperature = null; | |
_outUnit = temperatureUnit.degreesFahrenheit; | |
_outTemperatureAsString = ""; | |
} | |
get inUnit => _inUnit; | |
set inUnit(unit) => _inUnit = unit; | |
get outUnit => _outUnit; | |
set outUnit(unit) => _outUnit = unit; | |
get inTemperature => _inTemperature; | |
set inTemperature(temp) => _inTemperature = temp; | |
get outTemperatureAsString => _outTemperatureAsString; | |
calculateOutTemperature() { | |
if (inTemperature == null) { | |
_outTemperatureAsString = ""; | |
} else { | |
double outTemperatureInKelvin; | |
switch (inUnit) { | |
case temperatureUnit.degreesCelsius: | |
outTemperatureInKelvin = celsiusToKelvin(inTemperature); | |
break; | |
case temperatureUnit.degreesFahrenheit: | |
outTemperatureInKelvin = fahrenheitToKelvin(inTemperature); | |
break; | |
case temperatureUnit.kelvin: | |
outTemperatureInKelvin = inTemperature; | |
break; | |
default: | |
throw new ArgumentError("Unexpected input unit"); | |
} | |
switch (outUnit) { | |
case temperatureUnit.degreesCelsius: | |
_outTemperatureAsString = | |
celsiusToString(kelvinToCelsius(outTemperatureInKelvin)); | |
break; | |
case temperatureUnit.degreesFahrenheit: | |
_outTemperatureAsString = | |
fahrenheitToString(kelvinToFahrenheit(outTemperatureInKelvin)); | |
break; | |
case temperatureUnit.kelvin: | |
_outTemperatureAsString = kelvinToString(outTemperatureInKelvin); | |
break; | |
default: | |
throw new ArgumentError("Unexpected output unit"); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment