Fat*_*kar 6 flutter dart-null-safety
class StudentValidationMixin {\n\n String validateFirstName(String value) {\n if(value.length<2){\n return '\xc4\xb0sim en az iki karakter olmal\xc4\xb1d\xc4\xb1r';\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n正文可能正常完成,导致返回“null”,但返回类型可能是不可为 null 的类型。
\nclass _StudentAddState extends State with StudentValidationMixin {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text("Yeni \xc3\xb6\xc4\x9frenci ekle"),\n ),\n body: Container(\n margin: EdgeInsets.all(20.0),\n child: Form(\n child: Column(\n children: <Widget>[\n TextFormField(\n decoration: InputDecoration(labelText: "\xc3\x96\xc4\x9frenci Ad\xc4\xb1", hintText: "Fatih"),\n validator: validateFirstName,\n ),\n ],\n ),\n ),\n ),\n );\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n参数类型“String Function(String)”无法分配给参数类型“String?” 函数(字符串?)?'。
\n这两个独立的代码位出现错误。我应该怎么办?
\n\n\n正文可能会正常完成,导致返回“null”,但返回类型可能是不可为 null 的类型。
\n
当你在函数/方法中不返回任何内容时,它会隐式返回 null,所以这
\nString validateFirstName(String value) {\n if(value.length<2){\n return \'\xc4\xb0sim en az iki karakter olmal\xc4\xb1d\xc4\xb1r\';\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n相当于这个
\nString validateFirstName(String value) {\n if(value.length<2){\n return \'\xc4\xb0sim en az iki karakter olmal\xc4\xb1d\xc4\xb1r\';\n }\n return null;\n}\nRun Code Online (Sandbox Code Playgroud)\n但该方法的返回类型是String,不可为 null 的类型。要使其可为空(因为您要返回 null),请在其后面添加一个问号:
// v\nString? validateFirstName(String value) {\n if(value.length<2){\n return \'\xc4\xb0sim en az iki karakter olmal\xc4\xb1d\xc4\xb1r\';\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\n参数类型“String Function(String)”无法分配给参数类型“String”?函数(字符串?)?\'。
\n
的validator参数TextFormField是一个接收可为空类型并返回可为空类型的函数(即String? Function(String?),所以只需在参数后面添加一个问号即可value:
// v\nString? validateFirstName(String? value) {\n if (value == null) {\n // The user haven\'t typed anything\n return "Type something, man!";\n }\n if (value.length<2){\n return \'\xc4\xb0sim en az iki karakter olmal\xc4\xb1d\xc4\xb1r\';\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n