Error: The argument type 'String Function(String)' can't be assigned to the parameter type 'String? Function(String?)?'
Error: The argument type 'String Function(String)' can't be assigned to the parameter type 'String? Function(String?)?'
class StudentValidationMixin {
String validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
}
正文可能会正常完成,导致 'null' 被 returned,但 return 类型可能是不可为 null 的类型。
class _StudentAddState extends State with StudentValidationMixin {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Yeni öğrenci ekle"),
),
body: Container(
margin: EdgeInsets.all(20.0),
child: Form(
child: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: "Öğrenci Adı", hintText: "Fatih"),
validator: validateFirstName,
),
],
),
),
),
);
}
}
无法将参数类型 'String Function(String)' 分配给参数类型 'String? Function(String?)?'。
这两个独立的代码位出现错误。我该怎么办?
The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type.
当你在 function/method 中没有 return 任何东西时,它隐式地 return 为空,所以这个
String validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
相当于这个
String validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
return null;
}
但是这个方法的return类型是String
,一个不可为空的类型。要使其可为 null(因为您 returning null),请在其后添加一个问号:
// v
String? validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
The argument type 'String Function(String)' can't be assigned to the parameter type 'String? Function(String?)?'.
TextFormField
的validator
参数是一个接收可空类型的函数,return是一个可空类型(即String?Function(String?) ,所以在value
参数后面加一个问号即可:
// v
String? validateFirstName(String? value) {
if (value == null) {
// The user haven't typed anything
return "Type something, man!";
}
if (value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
TextFormField 验证器接受一个函数 return 字符串?带一个参数字符串?所以像下面这样重构你的代码。
class StudentValidationMixin {
String? validateFirstName(String? value) {
if(value == null)
return "İsim boş olamaz!";
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
return null;
}
}
TextFormField(
validator: (value) {
controller.isNumberValid(value);
因此对于 TextFormField 的验证器之类的东西,您需要以这种方式处理它以避免该错误。
我已经在
上回答了这个问题
不过,我仍然会给出一个提示以供快速参考(完整示例请阅读 link)
String? validatePassword(String? value) {
if(value!.length < 6){
return 'Invalid password, length must be more than 6';
}
}
编辑文本是我为个人使用创建的自定义 TextFeild
EditText(hintText:"Email",fontSize: 12.sp,paddingLeft: 8,marginLeft: 10.h,marginRight: 10.h,
textController: controller.emailController,validator: validateEmail,),
class StudentValidationMixin {
String validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
}
正文可能会正常完成,导致 'null' 被 returned,但 return 类型可能是不可为 null 的类型。
class _StudentAddState extends State with StudentValidationMixin {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Yeni öğrenci ekle"),
),
body: Container(
margin: EdgeInsets.all(20.0),
child: Form(
child: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: "Öğrenci Adı", hintText: "Fatih"),
validator: validateFirstName,
),
],
),
),
),
);
}
}
无法将参数类型 'String Function(String)' 分配给参数类型 'String? Function(String?)?'。
这两个独立的代码位出现错误。我该怎么办?
The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type.
当你在 function/method 中没有 return 任何东西时,它隐式地 return 为空,所以这个
String validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
相当于这个
String validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
return null;
}
但是这个方法的return类型是String
,一个不可为空的类型。要使其可为 null(因为您 returning null),请在其后添加一个问号:
// v
String? validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
The argument type 'String Function(String)' can't be assigned to the parameter type 'String? Function(String?)?'.
TextFormField
的validator
参数是一个接收可空类型的函数,return是一个可空类型(即String?Function(String?) ,所以在value
参数后面加一个问号即可:
// v
String? validateFirstName(String? value) {
if (value == null) {
// The user haven't typed anything
return "Type something, man!";
}
if (value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
TextFormField 验证器接受一个函数 return 字符串?带一个参数字符串?所以像下面这样重构你的代码。
class StudentValidationMixin {
String? validateFirstName(String? value) {
if(value == null)
return "İsim boş olamaz!";
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
return null;
}
}
TextFormField(
validator: (value) {
controller.isNumberValid(value);
因此对于 TextFormField 的验证器之类的东西,您需要以这种方式处理它以避免该错误。
我已经在
不过,我仍然会给出一个提示以供快速参考(完整示例请阅读 link)
String? validatePassword(String? value) {
if(value!.length < 6){
return 'Invalid password, length must be more than 6';
}
}
编辑文本是我为个人使用创建的自定义 TextFeild
EditText(hintText:"Email",fontSize: 12.sp,paddingLeft: 8,marginLeft: 10.h,marginRight: 10.h,
textController: controller.emailController,validator: validateEmail,),