参数类型“字符串?” Function(String)' 无法分配给参数类型 'String? 函数(字符串?)?'

Llo*_*ove 3 validation dart flutter dart-null-safety

我正在尝试设置密码和电子邮件验证,但收到上述错误。任何帮助将不胜感激。上面的错误出现在main.dart代码中,并且已经在代码中加粗了。

validator.dart 代码

enum FormType { login, register }

class EmailValidator {
  static String? validate(String value) {
    return value.isEmpty ? "Email can't be empty" : null;
  }
}

class PasswordValidator {
  static String? validate(String value) {
    return value.isEmpty ? "Password can't be empty" : null;
  }
}
Run Code Online (Sandbox Code Playgroud)

main.dart 代码

List<Widget>buildInputs() {
        return [
          TextFormField(
            validator: **EmailValidator.validate**,
            decoration: InputDecoration(labelText: 'Email'),
            onSaved: (value) => _email = value,
          ),
          TextFormField(
            validator: **PasswordValidator.validate**,
            decoration: InputDecoration(labelText: 'Password'),
            obscureText: true,
            onSaved: (value) => _password = value,
          ),
        ];
      }
Run Code Online (Sandbox Code Playgroud)

Md.*_*ikh 8

如果你检查validator它会返回一个可为空的字符串。

{String? Function(String?)? validator}

您可以像这样转换您的验证器

class EmailValidator {
  static String? validate(String? value) {
    return value==null ||  value.isEmpty ? "Email can't be empty" : null;
  }
}

class PasswordValidator {
  static String? validate(String? value) {
    return value==null ||value.isEmpty ? "Password can't be empty" : null;
  }
}

Run Code Online (Sandbox Code Playgroud)