无法将参数类型 'String?' 分配给参数类型 'String',因为 'String?' 可以为空且 'String' 不在文本小部件中

The argument type 'String?' can't be assigned to the parameter type 'String' because 'String?' is nullable and 'String' isn't in Text widget

当他使用 Getx 登录个人资料屏幕时,我试图显示此人的姓名和电子邮件

                              Column(
                                children: [
                                  Text(
                                    controller.userModel!.name,
                                    style: TextStyle(
                                      fontSize: 20,
                                      fontWeight: FontWeight.w600,
                                      color: Kprimarycolor,
                                    ),
                                  ),
                                  Text(
                                    controller.userModel!.email,
                                    style: TextStyle(
                                      fontSize: 20,
                                      fontWeight: FontWeight.w600,
                                      color: Kprimarycolor,
                                    ),
                                  ),
                                ],
                              ),
                            ],

但此错误一直显示 Error in vs code 和 Error in terminal

姓名和邮箱的相关代码是

class UserModel {
  late String? userId, email, name, pic;

  UserModel({
    required this.userId,
    required this.email,
    required this.name,
    required this.pic,
  });
  UserModel.fromJson(Map<dynamic, dynamic> map) {
    userId = map['userId'];
    email = map['email'];
    name = map['name'];
    pic = map['pic'];
  }
  toJson() {
    return {
      'userId': userId,
      'email': email,
      'name': name,
      'pic': pic,
    };
  }
}

我尝试添加 .toString() 和 as String 但调试后错误仍然显示

Column(
                            children: [
                              Text(
                                controller.userModel!.name!,
                                style: TextStyle(
                                  fontSize: 20,
                                  fontWeight: FontWeight.w600,
                                  color: Kprimarycolor,
                                ),
                              ),
                              Text(
                                controller.userModel!.email!,
                                style: TextStyle(
                                  fontSize: 20,
                                  fontWeight: FontWeight.w600,
                                  color: Kprimarycolor,
                                ),
                              ),
                            ],
                          ),
                        ],

我添加了'!'性格,应该可以。

在您的模型中, late String? userId, email, name, pic; 和@Salih Can 的回答将有效。

这里,String?表示字符串可以接受空值。但是 Text 小部件不接受空值。您需要使用 bang 运算符 ! 来处理它,并且通过添加 ! 意味着该值不再为空。更好的做法是检查它是否为 null,然后在 Text 上分配。可以是

  • Text(myVal==null? "defalut value": myVal)
  • Text(myVal??"default Value")
  • if(myval!=null) Text(myVal) 并且仅当字符串不为空时才会呈现。