美文网首页
flutter TextField 金额输入 保留2位小数

flutter TextField 金额输入 保留2位小数

作者: 林祖朋 | 来源:发表于2019-11-27 10:28 被阅读0次
//需要配合以下限制
// WhitelistingTextInputFormatter(RegExp("[0-9.]")),
// LengthLimitingTextInputFormatter(9),
class MoneyTextInputFormatter extends TextInputFormatter{

  @override
  TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
    // TODO: implement formatEditUpdate

    String newvalueText=newValue.text;

    if(newvalueText=="."){
      //第一个数为.
      newvalueText="0.";

    } else if(newvalueText.contains(".")){
        if(newvalueText.lastIndexOf(".")!=newvalueText.indexOf(".")){
          //输入了2个小数点
          newvalueText=  newvalueText.substring(0,newvalueText.lastIndexOf('.'));
        }else if(newvalueText.length-1-newvalueText.indexOf(".")>2){
          //输入了1个小数点 小数点后两位
         newvalueText=newvalueText.substring(0,newvalueText.indexOf(".")+3);
       }
    }

    return TextEditingValue(
      text: newvalueText,
      selection: new TextSelection.collapsed(offset: newvalueText.length),
    );
  }

}

demo:

class TestPageState extends State<TestPage> {

  TextEditingController _textEditingController;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _textEditingController=new TextEditingController();
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build

    return Scaffold(
      appBar: AppBar(
        title: Text('Test'),
      ),
      body: Center(
        child: TextField(
          keyboardType: TextInputType.number,
          enableInteractiveSelection: false,
          inputFormatters: [
            WhitelistingTextInputFormatter(RegExp("[0-9.]")),
            LengthLimitingTextInputFormatter(9),
            MoneyTextInputFormatter()],
          controller: _textEditingController,
        ),
      ),
    );
  }

  @override
  void dispose() {
    // TODO: implement dispose
    _textEditingController.dispose();
    super.dispose();
  }
}

相关文章

网友评论

      本文标题:flutter TextField 金额输入 保留2位小数

      本文链接:https://www.haomeiwen.com/subject/twxbbctx.html