Flutter/Dart报错:Function?无法赋值给void Function(String)?如何解决
问题报错
The argument type 'Function?' can't be assigned to the parameter type 'void Function(String)?'
原因分析
onFieldSubmitted组件属性要求的回调类型是void Function(String)?,会把输入框当前的内容作为String参数传入回调。你声明的onSubmit是无类型约束的Function?,后续改成的VoidCallback是无参数无返回值的空回调,都和要求的类型不匹配。- 表单验证器
validator要求的回调类型是String? Function(String?)?,需要接收可选String类型的输入值,返回可选String类型的校验提示,你声明的VoidCallback validate类型完全不符合要求。
解决方案
直接给两个参数指定匹配的类型即可,修改后的代码如下:
Widget defaultFormField({ required TextEditingController controller, required String label, required TextInputType type, // 给validator指定匹配的校验回调类型 required String? Function(String?) validate, // 给onSubmit指定和onFieldSubmitted匹配的回调类型 void Function(String)? onSubmit, required IconData prefix}) => TextFormField( onFieldSubmitted: onSubmit, validator: validate, controller: controller, keyboardType: type, // 补充你代码缺失的基础样式配置,可按需调整 decoration: InputDecoration( labelText: label, prefixIcon: Icon(prefix), border: const OutlineInputBorder(), ), );
内容的提问来源于stack exchange,提问作者tarek
相关产品推荐
相关产品推荐

