Implementation
set value(double? newValue) {
if (newValue == null) return;
final cleanValue = double.parse(newValue.toStringAsFixed(2));
final formattedText = formater.format(cleanValue.clamp(0, max));
final currentTextOffset = controller.selection.baseOffset;
final newSymbols =
findNewSymbols(formattedText, fixNumbers(controller.text));
log("$currentTextOffset + $newSymbols = ${currentTextOffset + newSymbols}");
controller.value = TextEditingValue(
text: formattedText,
selection: TextSelection.collapsed(
offset: (currentTextOffset + newSymbols)
.clamp(-10, formattedText.length)));
currentValue.value = (cleanValue / max).clamp(0, 1);
percent.value = (cleanValue * 100 ~/ max).clamp(0, 100);
}