Flutter中如何在字符串内使用Material Icons图标?
解决Flutter表单校验错误提示添加图标方案
方案1:使用Unicode emoji(无需修改现有校验返回逻辑)
如果你确实需要校验器只能返回字符串,直接把对应emoji的Unicode编码拼到返回的错误字符串开头即可,示例代码如下:
TextFormField( validator: (value) { if (value == null || value.trim().length < 6) { // 直接拼接警告emoji到错误文本前 return '\u26A0 输入字符数不能少于6位'; } return null; } )
常用的场景类emoji编码参考:
- 警告标识:
'\u26A0'显示效果为 ⚠️ - 错误标识:
'\u274C'显示效果为 ❌ - 信息提示:
'\u2139'显示效果为 ℹ️ - 成功标识:
'\u2705'显示效果为 ✅
方案2:使用官方Material Icon(样式更统一)
如果你可以调整输入框的装饰配置,不需要局限于校验器仅返回字符串的默认逻辑,可以通过InputDecoration的errorBuilder参数自定义错误提示组件,直接插入任意Material Icon,避免不同平台emoji样式不一致的问题,示例代码如下:
TextFormField( decoration: InputDecoration( // 自定义错误提示组件 errorBuilder: (context, errorMsg, stackTrace) { if (errorMsg == null) return const SizedBox.shrink(); return Row( mainAxisSize: MainAxisSize.min, children: [ Icon(Icons.warning_amber, color: Colors.redAccent, size: 14), SizedBox(width: 4), Text( errorMsg.toString(), style: const TextStyle(color: Colors.redAccent, fontSize: 12), ) ], ); }, ), validator: (value) { if (value == null || value.trim().length < 6) { // 此处仅返回纯文本错误信息即可,图标在errorBuilder中统一添加 return '输入字符数不能少于6位'; } return null; }, )
内容的提问来源于stack exchange,提问作者someJoe121
相关产品推荐
相关产品推荐

