first commit
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
/// 金额输入过滤:仅数字 + 单小数点 + 最多 2 位小数
|
||||
///
|
||||
/// [allowNegative] 为 true 时允许开头的负号(账户余额可能为负)。
|
||||
/// 记账金额、预算不使用负号,保持默认 false。
|
||||
class AmountInputFormatter extends TextInputFormatter {
|
||||
AmountInputFormatter({this.allowNegative = false});
|
||||
|
||||
final bool allowNegative;
|
||||
|
||||
static final _positiveRegex = RegExp(r'^\d*\.?\d{0,2}$');
|
||||
static final _negativeRegex = RegExp(r'^-?\d*\.?\d{0,2}$');
|
||||
|
||||
@override
|
||||
TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
|
||||
final text = newValue.text;
|
||||
if (text.isEmpty) return newValue;
|
||||
final regex = allowNegative ? _negativeRegex : _positiveRegex;
|
||||
if (!regex.hasMatch(text)) return oldValue;
|
||||
return newValue;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user