Flutter onChange 在我的文本字段上不起作用

问题描述 投票:0回答:1

我为我的 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),
flutter dart
1个回答
1
投票

{void Function(String)? onChanged}
类型:
void Function(String)?
当用户启动对文本字段值的更改时调用:当他们插入或删除文本或重置表单时。

您需要按如下方式更新您的代码。

 final void Function(String)? onChanged;

 TextFormField(
            controller: controller,
            onChanged: onChanged,
``
© www.soinside.com 2019 - 2024. All rights reserved.