gpt4 book ai didi

flutter - 错误 : The argument type 'String Function(String)' can't be assigned to the parameter type 'String? Function(String?)?'

转载 作者:行者123 更新时间:2023-12-04 07:23:53 24 4
gpt4 key购买 nike

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?函数(字符串?)?'。

这两个独立的代码位出现错误。我该怎么办?

最佳答案

The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type.

当您在函数/方法中不返回任何内容时,它会隐式返回 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';
}
}

The argument type 'String Function(String)' can't be assigned to the parameter type 'String? Function(String?)?'.

TextFormFieldvalidator参数是一个接收可空类型并返回可空类型(即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';
}
}

关于flutter - 错误 : The argument type 'String Function(String)' can't be assigned to the parameter type 'String? Function(String?)?' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68322066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com