首页 > 解决方案 > lib/widgets/textFieldWidgetStyle1.dart:22:18:错误:参数类型“函数”不能分配给参数类型“无效函数(字符串)?”

问题描述

我只想将此函数变量分配给 onChanged 事件,但它不断抛出错误

class TextFieldWidget extends StatelessWidget {
  final String hintText;
  final IconData prefixIcon;
  final IconData suffixIconData;
  final bool obscure;
  final Function onTextChanged;

  const TextFieldWidget({
    Key? key,
    required this.hintText,
    required this.prefixIcon,
    required this.suffixIconData,
    required this.obscure,
    required this.onTextChanged,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return TextField(
      onChanged: onTextChanged,
      style: TextStyle(
        color: Colors.orange,
        fontSize: 14.0,
      ), 

我试着在这里调用它

TextFieldWidget(
                hintText: 'Email',
                obscure: false,
                prefixIcon: Icons.email,
                suffixIconData: Icons.arrow_back,
                onTextChanged: (Value) => homeModel.isVisable(Value),
)
..

这是家庭模型

class HomeModel extends ChangeNotifier {
  //password is visable ?? the user must set this as activated by clicking the visable icon
  get isVisable => _isVisable;
  bool _isVisable = false;
  set isVisable(value) {
    _isVisable = value;
    notifyListeners();
  }

  //if email is valid set change
  get isValid => _isVisable;
  // ignore: unused_field
  bool _isValid = false;
  void isValidEmail(String input) {
    if (input == Global.ValidEmail.first) {
      _isValid = true;
    } else {
      _isValid = false;
    }
    notifyListeners();
  }
}

这是确切的错误 lib/widgets/textFieldWidgetStyle1.dart:22:18: Error: The argument type 'Function' can't be assigned to the parameter type 'void Function(String)?'。

标签: flutterdart

解决方案


改变

onChanged: onTextChanged,

onChanged: onTextChanged as void Function(String)?,

推荐阅读