DartFlutter super(key:key) 示例

问题描述 投票:0回答:1

就拿这段代码来说,是一个有状态的widget的构造函数。

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

这和写下面的代码一样吗?

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

此外,我理解第一个':'开始初始化器列表,或者说在手头的构造函数之前必须调用的函数 -- -- 在本例中,"MyHomePage"。

除了--或者说除了--super之外,还有没有其他函数的情况?

flutter dart
1个回答
1
投票

对于第一个问题。

不,这行不通,因为超级类已经被构造出来了,你会得到这个错误。The expression doesn't evaluate to a function, so it can't be invoked

对于第二个问题:

除了初始化字段和调用超级类的构造函数之外,在开发过程中,初始化器列表中也会使用断言(参见什么时候能用)。此处)为例。

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);
}

参考。语言之旅--初始化器列表

© www.soinside.com 2019 - 2024. All rights reserved.