定位参数如何通过 Dart 中的 null 安全检查?

How come positioned parameters pass through the null safety check in Dart?

以下代码行在 Dart 中无效:

void introduce({String name, int age}) {
  print('My name is $name and I am $age years old.');
}

编译器会抱怨参数的空安全性。

但是如果我们切换到定位参数,编译器突然停止抱怨参数的 null 安全性,并且以下变为有效:

void introduce(String name, int age) {
  print('My name is $name and I am $age years old.');
}

定位参数本质上是必需的。命名和位置 可选 参数由调用者选择性地传递,因此它们可能是 null。可以通过标记 required.

来使通常可选的命名参数成为必需的
void introduce({required String name, required int age}) {
  print('My name is $name and I am $age years old.');
}