class StudentValidationMixin {
String validateFirstName(String value) {
if(value.length<2){
return 'İsim en az iki karakter olmalıdır';
}
}
}
主体可能会正常完成,导致返回“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?函数(String?)?'.
这两段独立的代码出错了。我该怎么办?
4条答案
按热度按时间fquxozlt1#
主体可能会正常完成,导致返回“null”,但返回类型可能是不可为空的类型。
当你在函数/方法中不返回任何东西时,它会隐式地返回null,所以
相当于这个
但是这个方法的返回类型是
String
,一个不可空的类型。要使其可为空(因为您将返回null),请在它后面添加一个问号:无法将参数类型“String Function(String)”分配给参数类型“String?函数(String?)?'.
TextFormField
的validator
参数是一个函数,它接收可空类型并返回可空类型(即a String?函数(String?),因此只需在value
参数后添加一个问号:thtygnil2#
TextFormField
验证器接受一个返回String?
的函数,该函数接受一个参数String?
,所以像下面这样重构你的代码。xesrikrc3#
因此,对于像TextFormField的验证器这样的东西,您需要以这种方式处理它以避免该错误。
dgjrabp24#
我已经回答了这个问题,关于使用null安全性的Flutter Form验证
不过,我还是会给出一个提示,以供快速参考(从链接中阅读完整的示例)
编辑文本是我为个人用途创建的自定义文本字段