constructor - Dart 构造函数后的冒号

此代码来自 flutter 画廊,我正在尝试理解和调整它。我会知道这个语法是什么意思:

class DemoItem<T> {
  DemoItem({
    this.valueName,
    this.hintName,
    this.valueSurname,
    this.hintSurname,
    this.builder,
    this.valueToString

  }) : textController = new TextEditingController(text: valueToString(valueName));

特别是我会知道构造函数后面的冒号是什么意思,以及是否有一种方法可以定义另一个 TextEditingController,除了已经定义的那个。

最佳答案

:之后的部分称为“初始化列表。它是一个,分隔的表达式列表,可以访问构造函数参数,可以赋值给实例字段,甚至final 实例字段。这对于使用计算值初始化 final 字段很方便。

初始化列表也用于调用其他构造函数,如 : ..., super('foo').

从 Dart 版本 1.24 开始,初始化列表也支持 assert(...) 方便检查参数值。

初始化器列表无法从 this 读取,因为 super 构造函数需要在访问 this 有效之前完成,但它可以分配给 this .xxx.

如用户693336评论中所述指出:

这也意味着初始化列表在构造函数主体之前执行。此外,所有父类(super class)的初始化列表都会在任何构造函数体执行之前执行。

示例(从 https://github.com/dart-lang/language/issues/1394 复制):

class C {
  final int x;
  final int y;
  C(this.x) : y = x + 1;
}

关于constructor - Dart 构造函数后的冒号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50274605/

相关文章:

dart - 在 Flutter 中创建图像轮播

flutter - 如何检查 Flutter 应用程序是否正在调试中运行?

flutter - 未找到 Material 小部件

json - 主体上带有 Json 的 HTTP POST - Flutter/Dart

image - Flutter 网络图像不适合圆形头像

dart - 如何使用 Flutter 在 iOS 和 Android 上共享图像?

flutter - 如何让 Flutter 应用根据不同的屏幕尺寸做出响应?

gridview - 如何在 Flutter 的 GridView 中为 Widget 设置自定义高

android - 如何在 Flutter 中格式化日期时间

json - 如何在 Flutter 中解码 JSON?