如何解决错误:无法将参数类型“字符串函数字符串”分配给参数类型“字符串?函数字符串??'
class StudentValidationMixin {
String validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
}
主体可能正常完成,导致返回 'null',但返回类型可能是不可为 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?函数(字符串?)?'。
这两个单独的代码出现错误,我该怎么办?
解决方法
主体可能正常完成,导致返回 'null',但返回类型可能是不可为 null 的类型。
当你在函数/方法中不返回任何东西时,它隐式返回null,所以这个
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;
}
但是这个方法的返回类型是String
,一个不可为空的类型。要使其可以为空(因为您要返回 null),请在其后添加一个问号:
// v
String? validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
无法将参数类型“String Function(String)”分配给参数类型“String?函数(字符串?)?'。
validator
的 TextFormField
参数是一个函数,它接收可空类型并返回可空类型(即一个 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 验证器接受一个返回字符串的函数?带参数字符串?所以重构你的代码,如下所示。
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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。