【问题标题】:What is the best way to fix this simple Dart Null error?修复这个简单的 Dart Null 错误的最佳方法是什么?
【发布时间】:2021-12-31 08:19:17
【问题描述】:

我正在学习一个在线课程,讲师给出了这个代码示例......但现在它会引发 Null Safety 错误......

“参数'namePerson'的值不能为null,因为它的类型..但隐含的默认值为null'

void main() {     
     
  greet(greeting: 'Hey', namePerson: 'Cindy');
  }

void greet({String namePerson, String greeting}){
    print("$greeting $namePerson");
  }

现在经过研究,我发现我可以通过三种方式修复错误..通过放置一个 ?在字串之后...或通过在字串前放置“必需”字...或通过提供默认值...例如。

void greet({String namePerson = 'Bob', String greeting = 'Sam'}){

我真的不明白在这种情况下我们应该怎么做? 我观看了关于 null 安全错误的 Youtube 视频。但它仍然有点超出我目前的理解水平。有人可以解释如何以及为什么要解决此错误吗?感谢您提供任何帮助或提示!

【问题讨论】:

    标签: string flutter function dart null


    【解决方案1】:

    使用空检查运算符。您的代码将运行。使用如下代码。谢谢。

    void main() {     
             
          greet(greeting: 'Hey', namePerson: 'Cindy');
          }
        
        void greet({String? namePerson, String? greeting}){
            print("$greeting! $namePerson!");
          }
    

    【讨论】:

      【解决方案2】:

      你应该首先问你“在我的函数的上下文中,我的参数是可选的吗?

      显然,打招呼的功能应该有:

      • 是必需的,所以不可为空 namePerson:你必须有一个名字才能打招呼。而且你不能有一个 defaultValue(任意的“Bob”?为什么?它真的没有意义)
      • 一个可选的问候语,但有一个默认值,所以不可为空:你必须对他说些什么来问候他

      所以我想要它:

      void greet({required String namePerson, String greeting = 'Hello'}){
      

      所以基本上,你应该把这两个方面分开:

      • 我的函数的内部主体应该使用可空值还是不可空值?
      • 我的函数应该采用一个必需的、可选的但不可为空(默认情况下)的值,还是一个完全可选的值 (!nullable)?

      希望有所帮助

      【讨论】:

      • 非常感谢...您实际上也帮助我解决了该系列中的下一个教程...这个特定的课程现在有点过时了...但是“必需”这个词正在使所有区别!谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 2013-12-10
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多