Flutter表单验证报错:参数类型'Pattern'无法分配给参数类型'String'?
本次报错和你之前的空检查问题不属于同类问题,属于静态类型不匹配错误。
报错原因
Dart 的 RegExp 构造方法只接受 String 类型的入参,你代码里将 pattern 变量声明为 Pattern 类型,而 Pattern 是 String、RegExp 等可匹配类型的抽象父类,无法直接传入要求 String 类型的参数位,所以触发类型校验报错。
修复方案
最简便的修复方式是直接修改 pattern 变量的类型声明为 String 即可,你赋值的本身就是正则字符串字面量,修改后代码如下:
validator: (value) { String pattern = r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)| (\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$'; RegExp regex = RegExp(pattern); if (!regex.hasMatch(value!)) { return 'Enter a valid email'; } else { return null; } },
内容的提问来源于stack exchange,提问作者Leena Marie
相关产品推荐
相关产品推荐

