You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:27:04