参数类型 'String?' 不能分配给参数类型"字符串",因为"字符串?"可为空,而"字符串"不是



我有以下代码:

var _editedService = Service(
id: '',
name: '',
description: '',
aboutUs: '',
streetNumber: null,
streetName: '',
suburb: '',
city: '',
province: '',
zipCode: null,
contactNum: null,
email: '',
logoUrl: '',
imageUrl: '',
);

当我运行此程序时,我收到以下错误:

错误:参数类型为"String?"无法分配给参数类型"String",因为"String?"可为null,而"String"不可为null。

我已经完成了另一个Stack响应,但没有成功。

有什么建议吗?

这是服务类别:

class Service with ChangeNotifier {
final String id;
final String name;
final String description;
final String aboutUs;
final double? streetNumber;
final String streetName;
final String suburb;
final String city;
final String province;
final double? zipCode;
final double? contactNum;
final String email;
final String logoUrl;
final String imageUrl;
late final bool? isFavorite;
Service({
required this.id,
required this.name,
required this.description,
required this.aboutUs,
required this.streetNumber,
required this.streetName,
required this.suburb,
required this.city,
required this.province,
required this.zipCode,
required this.contactNum,
required this.email,
required this.logoUrl,
required this.imageUrl,
this.isFavorite = false,
});
void toggleFavoriteStatus() {
isFavorite = !isFavorite!;
notifyListeners();
}
}

使用"quot;在您返回的内容结束时

String? xya = "safdd";
String yz = xya!;

我在dartpad中测试了代码,它完全正常,没有任何问题。
所以代码的其他部分抛出了错误,用错误行号等详细的错误消息更新您的答案。该问题与飞镖零位安全性有关。

这里有一个例子:

main() {
print(add('hello', 'world'));
}
String add(String a, String? b) {
return a + b;
}

上述代码块将引发错误:The argument type 'String?' can't be assigned to the parameter type 'String' because 'String?' is nullable and 'String' isn't

为了解决这个问题,你必须使用空感知操作符:

main() {
print(add('hello', 'world'));
}
String add(String a, String? b) {
return a + b!;
}

注意:!return语句中b后面的(exclemation标记(。它将解决问题。

这可能有助于

启用null安全时,如果变量末尾没有?,则变量不能为null。例如:

String myString = "Hello World"; //This CANNOT be null
String? myString = null; //This CAN be null

解决方案可能是将空校验!作为空,或者如果为空则替换为空字符串。

String myString = myOtherString!
String myString = myOtherString ?? "Something else";

最新更新