class Foo {
  int count; // Error
  void bar() => count = 0;
}

为什么我已经在bar方法中初始化错误了?如果count被标记为final,我可以理解这个错误.

推荐答案

(Your code was fine before Dart 2.12, null safe)

使用空安全性,Dart无法知道您是否实际将变量分配给了count.Dart可以通过三种方式查看初始化:

  1. At the time of declaration:

    int count = 0;
    
  2. In the initializing formals:

    Foo(this.count);
    
  3. In the initializer list:

    Foo() : count = 0;
    

因此,根据Dart的说法,代码中从未初始化过count,因此出现了错误.解决方案是用上面显示的3种方式初始化变量,或者只使用late关键字,这将告诉Dart在使用变量之前,您将在其他点初始化变量.

  1. Use the 100 keyword:

    class Foo {
      late int count; // No error
      void bar() => count = 0;
    }
    
  2. Make variable nullable:

Dart相关问答推荐

从GTIN中提取GS1公司前缀

数字到字符串的转换在 Dart 中总是不变的(即没有文化)?

如何在flutter中管理switch小部件的原生外观

如何使用 dart 将 Uint8list 转换为 List

什么时候在 Dart 中使用interfaces接口?

在 Dart 中,List.unmodifiable() 和 UnmodifiableListView 有什么不同?

如何使用Flutter在按钮网格中滑动(swipe)/拖动(drag) 2 个或更多按钮

错误:非抽象类InternalSelectableMathState

如何在Flatter中更改复选框边框 colored颜色 ?默认情况下,它显示为黑色,但我希望它显示为灰色

如何在 Flutter 的小部件树中将新的 MaterialPageRoute 作为子项打开

dart中整数的最大值是多少?

用百分比将小部件放置在堆栈中

泛型类型Dart上的调用方法

将DateTime转换为ISO 8601

如何使用工厂构造函数扩展抽象类?

Dart null 安全性不适用于类字段

如何在 Dart 中调用超类的构造函数和其他语句?

如何在抽象类中声明工厂构造函数?

如何在 Dart 中将 UTF-8 字符串转换为字节数组?

如何重新引发异常并保留堆栈跟踪?