currency_textfield_2
A Controller for currency text input
As after more than 4 years maintaining the original package, the creator decided to revoke my access and archive the repo, i'm again activating this fork (that will be updated).
Demo

Install
Follow this guide
Usage
Import the library
import 'package:currency_textfield_2/currency_textfield_2.dart';
Create the Controller
CurrencyTextFieldController controller = CurrencyTextFieldController()
Parameters and getters
Currency Symbol, Decimal and Thousand separator
It's possible to customize currencySymbol, decimalSymbol and thousandSymbol:
var controller = CurrencyTextFieldController(currencySymbol: "RR", decimalSymbol: ".", thousandSymbol: ",");
Get double value, get int value and get number in string format
To get the number value from controller, you can use both the doubleValue or the intValue properties:
//Double value:
final double val = controller.doubleValue;
//Int value:
final int val = controller.intValue;
//String number:
final int val = controller.textWithoutCurrencySymbol;
Initial value
You can initialize the controller using a int or a double, but not both at the same time.
To make this, just use initDoubleValue or initIntValue:
final CurrencyTextFieldController controller2 = CurrencyTextFieldController(initDoubleValue: 10);
final CurrencyTextFieldController controller3 = CurrencyTextFieldController(initIntValue: 1000);
// this will raise an error!
final CurrencyTextFieldController controller4 = CurrencyTextFieldController(initIntValue: 1000,initDoubleValue: 10);
Position of the symbol and separator
You can decide if the symbol will be before or after the number.
To make this, just use currencyOnLeft:
// default with the currency before the number
final CurrencyTextFieldController controller = CurrencyTextFieldController();
// currency after the number
final CurrencyTextFieldController controller2 = CurrencyTextFieldController(currencyOnLeft: false);
And also define the separator between the symbol and the value with currencySeparator:
// the default value is a single space
final CurrencyTextFieldController controller = CurrencyTextFieldController(currencySeparator: ' -> ');
Block the user from setting negative numbers
Just set enableNegative to false
Force a value from outside the TextField
final CurrencyTextFieldController controller = CurrencyTextFieldController();
// using a double
controller.forceValue(initDoubleValue: 300.5);
// using an int
controller.forceValue(initIntValue: 10000);
Change the currency symbol of the controller
final CurrencyTextFieldController controller = CurrencyTextFieldController();
// keeping the current value:
controller.replaceCurrencySymbol('EUR');
// reseting the current value:
controller.replaceCurrencySymbol('EUR', resetValue: true);