es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Formato de Flutter para la moneda en TexFormField.

Tengo una aplicación de flutter que acepta una cantidad de dinero como entrada usando un textformfield. Me gustaría formatear la entrada en textformfield para que cualquier cosa que se ingrese pueda ser formateada como moneda completa con comas separadoras de miles. He intentado usar el formateador de números del paquete intl pero todo lo que puedo hacer es imprimirlo en la línea de comandos.

Aquí está cómo se ve actualmente:

image

Así es como me gustaría que se vea:

image

Este es el código del textfield:

  TextEditingController currencyControler = TextEditingController();

String? amount;

TextFormField(
              controller: currencyControler,
              keyboardType: TextInputType.number,
              validator: (value) {
                if (value!.isEmpty) {
                  return 'Por favor ingrese una cantidad';
                }
                return null;
              },
              onSaved: (String? value) {
                amount = value;
              },
              inputFormatters: [
                FilteringTextInputFormatter.digitsOnly,
                CurrencyFormatter(amount: amount),
              ],
              decoration: InputDecoration(
                icon: const Icon(Icons.money_outlined),
                labelText: "Cantidad",
                hintText: 'Ingrese una cantidad',
                border: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(8.0),
                ),
              ),
            );

¿Cómo puedo formatear la entrada para que las comas separadoras aparezcan a medida que se está ingresando cualquier número?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede utilizar la clase NumberFormat del paquete intl para formatear la entrada de datos como moneda con separadores de miles.

    En primer lugar, cree una instancia de NumberFormat con el formato de moneda deseado:

    dart
    NumberFormat currencyFormat = NumberFormat.currency(
    symbol: '\$',
    decimalDigits: 0,
    );

    Luego, utilice el método NumberFormat.format() para formatear la entrada de datos como moneda con separadores de miles:

    dart
    TextFormField(
    controller: currencyControler,
    keyboardType: TextInputType.number,
    validator: (value) {
    if (value!.isEmpty) {
    return 'Por favor ingrese un monto';
    }
    return null;
    },
    onSaved: (String? value) {
    amount = currencyFormat.format(int.parse(value!));
    },
    decoration: InputDecoration(
    icon: const Icon(Icons.money_outlined),
    labelText: "Monto",
    hintText: 'Ingrese un monto',
    border: OutlineInputBorder(
    borderRadius: BorderRadius.circular(8.0),
    ),
    ),
    )

Comments are closed.