参数类型'String?'无法赋值给参数类型'String' flutter报错
The argument type 'String?' can't be assigned to the parameter type 'String' error in flutter
Navigator.push(context, MaterialPageRoute(
builder: (context)=>myhome(
userEmail: userDetails!.email,
userName: userDetails.displayName,
)
class myhome extends StatefulWidget {
String userName;
String userEmail;
myhome({required this.userName,required this.userEmail});
在 userEmail 和 userName 中显示错误。我该如何解决?
你必须给变量加上一个爆炸符号,告诉编译器它不能为空
Navigator.push(context, MaterialPageRoute(
builder: (context)=>myhome(
userEmail: userDetails.email!,
userName: userDetails.displayName!,
)
class myhome extends StatefulWidget {
String userName;
String userEmail;
myhome({required this.userName,required this.userEmail});
空安全在这里发挥作用。
来自 userDetails 的电子邮件和显示名称可以为空,这意味着它们的值可以为空。但是您的 myhome class 中的字段不是。
您可以通过将它们的类型设置为“字符串?”来使它们可以为空。
添加“!” “userDetails.!email”的运算符在您说该字段不会为空的情况下确实有效,但这不是一个好习惯。
通过查看空安全文档,您可以更好地理解这一点
https://dart.dev/null-safety
Navigator.push(context, MaterialPageRoute(
builder: (context)=>myhome(
userEmail: userDetails!.email,
userName: userDetails.displayName,
)
class myhome extends StatefulWidget {
String userName;
String userEmail;
myhome({required this.userName,required this.userEmail});
在 userEmail 和 userName 中显示错误。我该如何解决?
你必须给变量加上一个爆炸符号,告诉编译器它不能为空
Navigator.push(context, MaterialPageRoute(
builder: (context)=>myhome(
userEmail: userDetails.email!,
userName: userDetails.displayName!,
)
class myhome extends StatefulWidget {
String userName;
String userEmail;
myhome({required this.userName,required this.userEmail});
空安全在这里发挥作用。 来自 userDetails 的电子邮件和显示名称可以为空,这意味着它们的值可以为空。但是您的 myhome class 中的字段不是。 您可以通过将它们的类型设置为“字符串?”来使它们可以为空。 添加“!” “userDetails.!email”的运算符在您说该字段不会为空的情况下确实有效,但这不是一个好习惯。 通过查看空安全文档,您可以更好地理解这一点 https://dart.dev/null-safety