Flutter Icon类型无法赋值给String类型参数报错修复
报错根因
这个类型报错是传参不符合方法定义导致的:你用的自定义封装组件FormHelper.inputFieldWidget,第二个位置的参数明确要求传String类型值(一般是表单字段的唯一标识名),你直接传了Icon类型的组件,类型不匹配就直接抛错。另外你代码里showPrefixIcon设成了false,就算参数传对也不会显示前缀图标。
修复步骤
- 调整传参顺序:把第二个位置的
const Icon(Icons.ac_unit)替换成字符串类型的字段标识,比如"product_name" - 开启前缀图标开关:把
showPrefixIcon的值从false改成true - 找到组件对应的前缀图标参数(这类封装表单组件的图标参数一般命名为
prefixIcon或者prefixIconData),传入对应配置:- 如果参数接收
Widget类型,就传const Icon(Icons.ac_unit) - 如果参数接收
IconData类型,直接传Icons.ac_unit就行
- 如果参数接收
修正后的代码参考:
Padding( padding: const EdgeInsets.only(bottom: 10, top: 10), child: FormHelper.inputFieldWidget( context, // 第二个参数传字符串类型的字段唯一key "product_name", "Product Name", (onValidateVal) { if(onValidateVal.isEmpty) { return "Product name can't be empty"; } return null; }, (onSavedVal) {}, borderColor: Colors.black, borderFocusColor: Colors.black, textColor: Colors.black, hintColor: Colors.black.withOpacity(.7), borderRadius: 10, // 开启前缀图标显示 showPrefixIcon: true, // 前缀图标配置,参数名根据你自己封装的FormHelper调整 prefixIcon: const Icon(Icons.ac_unit), ), )
如果记不清组件的参数定义,直接按住Ctrl点
FormHelper.inputFieldWidget跳转到源码,看每个位置的参数类型、命名要求,按规则传值就不会出类型错误。
内容的提问来源于stack exchange,提问作者pomoworko.com
相关产品推荐
相关产品推荐

