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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:06:03