修复这个简单的Dart Null错误的最佳方法是什么



我正在学习一门在线课程,老师给出了这个代码示例。。。但它现在抛出了一个空安全错误。。。

"参数"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"?

显然,问候某人的功能应该是:

  • 是必需的,所以不可为nullnamePerson:你必须有一个名字来问候某人。你不能有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!");
}

相关内容

  • 没有找到相关文章

最新更新