我正在学习一门在线课程,老师给出了这个代码示例。。。但它现在抛出了一个空安全错误。。。
"参数"namePerson"的值不能为null,因为其类型为。。但隐式默认值为null’
void main() {
greet(greeting: 'Hey', namePerson: 'Cindy');
}
void greet({String namePerson, String greeting}){
print("$greeting $namePerson");
}
现在,经过研究,我发现我可以用三种方法来纠正这个错误。。通过放置?在字符串后面。。。或者将单词"required"放在字符串之前。。。或者通过给定默认值。。。例如
void greet({String namePerson = 'Bob', String greeting = 'Sam'}){
我真的不明白,在这种情况下,我们理想情况下应该做什么?我在Youtube上看了一段关于零安全错误的视频。。但这仍然有点超出了我目前的理解水平。有人能解释一下你将如何以及为什么解决这个错误吗?感谢您的帮助或提示!
你应该先问你"在我的函数的上下文中,optionnal"?
显然,问候某人的功能应该是:
- 是必需的,所以不可为null
namePerson
:你必须有一个名字来问候某人。你不能有defaultValue(任意的"Bob"?为什么?这真的没有意义( - 一个可选的问候语,但有一个默认值,因此不可为null还有:你必须对他说些什么来问候他
所以我会这样做:
void greet({required String namePerson, String greeting = 'Hello'}){
所以基本上,你应该把两个方面分开:
- 我的函数的内部应该使用可为null的值还是不可为null值
- 我的函数应该取一个必需的、可选但不可为null的值(默认情况下也是如此(,还是一个完全可选的值(!nullable(
帮助的希望
使用空校验运算符。您的代码将运行。使用如下代码。谢谢
void main() {
greet(greeting: 'Hey', namePerson: 'Cindy');
}
void greet({String? namePerson, String? greeting}){
print("$greeting! $namePerson!");
}