12345678910111213141516171819202122232425262728293031 |
- import 'package:flutter/services.dart';
- /// 只允许输入小数
- class UsNumberTextInputFormatter extends TextInputFormatter {
- static const defaultDouble = 0.001;
- static double strToFloat(String str, [double defaultValue = defaultDouble]) {
- try {
- return double.parse(str);
- } catch (e) {
- return defaultValue;
- }
- }
- @override
- TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
- String value = newValue.text;
- int selectionIndex = newValue.selection.end;
- if (value == ".") {
- value = "0.";
- selectionIndex++;
- } else if (value != "" && value != defaultDouble.toString() && strToFloat(value, defaultDouble) == defaultDouble) {
- value = oldValue.text;
- selectionIndex = oldValue.selection.end;
- }
- return new TextEditingValue(
- text: value,
- selection: new TextSelection.collapsed(offset: selectionIndex),
- );
- }
- }
|