answer method
///////// /////////
Implementation
/* Answer */
////////////
@override
Future<bool> answer(dynamic v, {bool range = false}) async
{
bool ok = true;
touched = true;
if (value != v) {
///////////////
/* Old Value */
///////////////
var oldValue = value;
if (range != true) {
value = v.round();
}
else if (range == true && v != null) {
List answerValues = v?.split(',') ?? [minimum, maximum];
double value1 = S.toDouble(answerValues[0]) ?? minimum ?? 0;
double value2 = (answerValues.length > 1 ? S.toDouble(answerValues[1]) : value1) ?? maximum ?? 0;
value = '${value1.round()},${value2.round()}';
}
/////////////////
/* Old GeoCode */
/////////////////
var oldGeocode = geocode;
geocode = Payload(
latitude: System().currentLocation?.latitude,
longitude: System().currentLocation?.longitude,
altitude: System().currentLocation?.altitude,
epoch: DateTime.now().millisecondsSinceEpoch,
user: System.app?.user.claim('key'),
username: System.app?.user.claim('name'));
//////////
/* Save */
//////////
//ok = await save();
/////////////////
/* Save Failed */
/////////////////
if (ok == false) {
value = oldValue;
geocode = oldGeocode;
}
//////////////////
/* Save Success */
//////////////////
else {
dirty = true;
}
}
return ok;
}