Esta crónica ha sido analizado por especialistas para que tengas la garantía de la exactitud de este post.
Solución:
¡Aquí tienes! Espero eso ayude 🙂
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:math' as math;
void main()
runApp(new MaterialApp(home: new MyApp()));
class MyApp extends StatefulWidget
@override
_MyAppState createState() => _MyAppState();
class _MyAppState extends State
@override
Widget build(BuildContext context)
return Scaffold(
appBar: AppBar(
title: Text("Flutter"),
),
body: Form(
child: ListView(
children: [
TextFormField(
inputFormatters: [DecimalTextInputFormatter(decimalRange: 2)],
keyboardType: TextInputType.numberWithOptions(decimal: true),
)
],
),
),
);
class DecimalTextInputFormatter extends TextInputFormatter
Aquí hay una solución que funciona para mí.
TextFormField(
inputFormatters: [
WhitelistingTextInputFormatter(RegExp(r'^d+.?d0,2')),
],
)
Si desea permitir entradas como (.21) o (.25)
Aquí hay una solución-
TextFormField(
inputFormatters: [
WhitelistingTextInputFormatter(RegExp(r'^(d+)?.?d0,2')),
],
)
Una versión más corta de DecimalTextInputFormatter usando Regexp:
class DecimalTextInputFormatter extends TextInputFormatter decimalRange >= 0,
'DecimalTextInputFormatter declaretion error')
String dp = (decimalRange != null && decimalRange > 0) ? "([.][0-9]0,$decimalRange)0,1" : "";
String num = "[0-9]*$dp";
if(activatedNegativeValues)
_exp = new RegExp("^((((-)0,1)
else
_exp = new RegExp("^($num)0,1$");
RegExp _exp;
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue,
TextEditingValue newValue,
)
if(_exp.hasMatch(newValue.text))
return newValue;
return oldValue;
Te mostramos las comentarios y valoraciones de los lectores
Al final de todo puedes encontrar las interpretaciones de otros gestores de proyectos, tú además tienes la libertad de mostrar el tuyo si te gusta.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)