我正在用Dart Apprentice本书学习dart .你能告诉我为什么这个代码将0显示为id,尽管我已经将const对象创建为 const vicki = User(id: 24, name: 'Vicki');

请让我知道这个代码有什么问题?

void main() {
  const vicki = User(id: 24, name: 'Vicki');
  print(vicki.id); // it shows 0. But it must be 24
}


class User {
 

  final int id = 0;
  final String name = '';

  const User({int id = 0, String name = "anonymous"});
}

推荐答案

当前代码中的命名参数未在对象中设置任何值.因此,您只需向构造函数声明一些参数,而不使用任何参数.

您的代码应该写成:

void main() {
  const vicki = User(
    id: 24,
    name: 'Vicki',
  );
  print(vicki.id); // 24
}

class User {
  final int id;
  final String name;

  const User({
    this.id = 0,
    this.name = "anonymous",
  });
}

这是写以下内容的快捷方式:

class User {
  final int id;
  final String name;

  const User({
    int id = 0,
    String name = "anonymous",
  })  : this.id = id,
        this.name = name;
}

Dart相关问答推荐

dart 日期时差(分钟)

单元测试广播流类

Dart 可空记录与模式匹配:(String, int)?类型的匹配值无法分配给所需类型(Object?, Object?)

为什么 Dart 的编译器认为代码可能为空,而代码保证它不能为空?

在 Dart/Flutter 中创建 DateTime 对象时如何指定 TimeZone?

如何从 Flutter App 连接 Ms SQL?

在Flatter中,依赖项必须指定版本号?

Dart VM 的性能与 Node.js 相比如何?

如何在Dart中创建空Map

未定义命名参数child.在 Center() 构造函数中

使用元组解包样式交换两个变量的值

使用Flatter向Cloud Firestore添加对象

错误:无法调用需要 const 表达式的非const构造函数

无法使用 Flutter 调用 Localhost,将随机端口分配给 HTTP GET 调用

Flutter 构建失败. Android 依赖 'androidx.core:core' 的编译(1.0.0)和运行时(1.0.1)类路径有不同的版本

以编程方式使dart中的十六进制 colored颜色 变亮或变暗

如何重新引发异常并保留堆栈跟踪?

Dart 中的 List.shuffle()?

Dart lambda/shortland 函数混淆

在 Dart 中为数字添加前导零