【问题标题】:Dart/Flutter super(key:key) exampleDart/Flutter super(key:key) 示例
【发布时间】:2020-05-23 05:51:34
【问题描述】:

将此代码用于有状态小部件的构造函数:

  MyHomePage({Key key, this.title}) : super(key: key);

这和写下面的一样吗:

MyHomePage(Key key, String title) {
     super(key);
     this.title = title;
}

此外,我知道第一个 ':' 开始初始化列表,或者必须在手头的构造函数之前调用的函数 - 在本例中为“MyHomePage”。

是否有任何情况下,除了 - 或除了 - super 之外还有其他功能?

【问题讨论】:

  • 您可以查看official docs 以了解使用初始化列表可以做什么

标签: flutter dart


【解决方案1】:

第一个问题:

不,它不起作用,因为超类已经构建,你会得到这个错误:The expression doesn't evaluate to a function, so it can't be invoked

第二个问题:

除了初始化字段和调用超类的构造函数外,断言在开发过程中也被用在初始化列表中(看它何时工作here),例如:

import 'dart:math';

class Point {
  final num x;
  final num y;
  final num distanceFromOrigin;

  Point(x, y)
      : assert(x < y),
        x = x,
        y = y,
        distanceFromOrigin = sqrt(x * x + y * y);
}

main() {
  var p = new Point(2, 3);
  print(p.distanceFromOrigin);
}

参考: Language Tour - Initializer List

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 2020-09-29
    • 2020-07-06
    • 2012-12-27
    • 1970-01-01
    • 2013-03-08
    • 2021-07-23
    • 1970-01-01
    相关资源
    最近更新 更多