也就是说,我try 从另一个构造函数调用一个构造函数,然后进一步构造.我无法从文件中判断是否可以做到这一点.

下面是一个人为设计的例子,以防有帮助:

class Chipmunk {

  Chipmunk.named(this.name);

  Chipmunk.famous() {
    this.named('Chip');  // <-- What, if anything, goes here?
    this.fame = 1000;   
  }
}

var chip = new Chimpmunk.famous();

推荐答案

有两种可能的方法可以做到这一点:

class Chipmunk {
  String name;
  int fame;

  Chipmunk.named(this.name, [this.fame]);

  Chipmunk.famous1() : this.named('Chip', 1000);
  factory Chipmunk.famous2() {
    var result = new Chipmunk.named('Chip');
    result.fame = 1000;
    return result;
  }
}

Chipmunk.famous1()是重定向构造函数.您不能在这个函数中分配属性,所以您调用的构造函数必须允许您想要设置的所有属性.这就是我添加fame作为可选参数的原因.在这种情况下,你可以进入namefame决赛.

Chipmunk.famous2()是一个工厂构造器,可以创建你想要的实例.在本例中,fame不能是final(显然,如果在named构造函数中使用fame参数,则可能是final).

第一个变体可能更适合您的用例.

以下是语言规范中的文档:

生成构造函数由构造函数名称、构造函数参数列表、重定向子句或初始值设定项列表和可选主体组成.

https://www.dartlang.org/docs/spec/latest/dart-language-specification.html#h.flm5xvbwhs6u

Dart相关问答推荐

如何映射作为DART中其他模型基础的复杂模型

在 Flutter 中以间隔自动获取 API 数据

创建默认应用时 FirebaseOptions 不能为空

VS Code 无法识别 Flutter 中的单元测试

Asset图像作为Card背景,Flutter 中顶部有文本

如何从 Dart 中的映射中过滤空值

在`lib`文件夹中使用`src`子文件夹有什么好处吗

如何为 spawnUri 动态构建 Dart 脚本?

Flutter Dismissible 坚持必须从树中删除列表项

有没有可能用Flatter摄像头插件播放视频?

如何在组件类中获取 ngForm 变量引用?

如何将 Stream 转换为 List

如何使用flatter删除Firestore文档中的字段

dart 如何创建、监听和发出自定义事件?

我应该更喜欢迭代 Map.entries 还是 Map.values?

你如何在 Dart 中创建一个 Stream?

Dart - 如何对 Map 的键进行排序

Dart 中的全局变量

Dart 是否支持枚举?

Dart:创建一个从 0 到 N 的列表