参数类型'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