【问题标题】:Why Dart can't define an instance property that depends on another instance property [duplicate]为什么 Dart 不能定义依赖于另一个实例属性的实例属性 [重复]
【发布时间】:2021-03-07 22:38:12
【问题描述】:

Flutter: The instance member'stars' can't be accessed in an initializer. Error

我提出了上述问题,并收到以下答案作为错误原因。

原因:在 dart 中你不能创建一个类级别的变量取决于 另一个变量

↑ Dart、Flutter 官方文档中是否有解释(或类似的)?

还是从Dart的构造器机制派生出来的?

如果是这样,我想了解构造函数是如何工作的,这就是这个错误的原因。

官方的 Dart、Flutter 文档等有相关部分吗?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    其实是由于Dart的构造器机制,特别是构造过程中的执行顺序,以及Dart在对象中引用实例变量的方式。

    来自Dart Language TourInstance Variables 部分:

    如果您在声明它的位置(而不是在构造函数或方法中)初始化实例变量,则在创建实例时设置该值,即在构造函数及其初始化列表执行之前。

    当您通过 variableName 在 Dart 类中引用实例变量时,隐含的 this 引用包含该变量的实例化对象。由于 Dart 的对象构造执行顺序,this 在实例变量声明期间无法引用该对象,因为该对象尚未创建。因此,this.variableNamevariableName(隐含 this)实际上无法引用实例变量。

    【讨论】:

    • 请查看更新后的答案以获得更完整的解释。
    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2015-09-15
    • 2021-06-22
    • 2021-09-09
    相关资源
    最近更新 更多