我为我的 Flutter 项目创建了一个可重用的文本字段,但 OnChange 方法不适用于可重用的小部件。每当我尝试直接在项目上创建该字段时,它都会起作用。我怀疑 Textfield onChange 附带的值选项可能是错误的原因。有解决办法吗?
class NumberOnlyTextField extends StatelessWidget{
final controller;
final String hintText;
final bool obscureText;
final bool enableTxtField;
final Function()? onChanged;
const NumberOnlyTextField({
super.key,
required this.controller,
required this.hintText,
required this.obscureText,
required this.enableTxtField,
required this.onChanged,
});
@override
Widget build(BuildContext context){
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 15.0),
child: Container(
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: const Color.fromARGB(255, 213, 211, 211)),
borderRadius: BorderRadius.circular(4),
),
child: Padding(
padding: const EdgeInsets.only(left: 10.0, right: 10.0),
child: TextField(
controller: controller,
onChanged: (value) { onChanged; },
obscureText: obscureText,
enabled: enableTxtField,
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.allow(
RegExp('[0-9]+.?[0-9]*'),
),
],
decoration: InputDecoration(
border: InputBorder.none,
hintText: hintText,
hintStyle: TextStyle(color: Colors.grey[500]),
),
),
),
),
);
}
}
这是在另一个页面上使用的地方:
//Amount
NumberOnlyTextField(
controller: amountXController,
onChanged: validateAmount(),
hintText: 'Amount',
obscureText: false,
enableTxtField: true,
),
const SizedBox(height: 10),
类型:{void Function(String)? onChanged}
当用户启动对文本字段值的更改时调用:当他们插入或删除文本或重置表单时。void Function(String)?
您需要按如下方式更新您的代码。
final void Function(String)? onChanged;
TextFormField(
controller: controller,
onChanged: onChanged,
``