将 Dart 2.17 Super Initializer 用于 Widget 键

Using Dart 2.17 Super Initializer for Widget key

现在 Dart 2.17 允许超级初始化器功能,看来我现在可以替换我的默认样板

class WidgetName extends StatelessWidget {
  const WidgetName({Key? key}) : super(key: key);

class WidgetName extends StatelessWidget {
  const WidgetName({super.key});

这有什么后果?考虑到 'old' 语法与 'new' 语法中 key 可能为 null 的值,我认为代码中的这种更改不是 100% 等效的。也可能是我没有完全理解super初始化的底层过程

100%等效。在这两种情况下 key 都是 Key?.

类型

当您将鼠标悬停在编辑器中的构造函数上时,您可以确认 key 的类型。

超级初始化程序的类型将与超级构造函数中的类型相匹配。本例中的超级构造函数是 StatelessWidget 的默认构造函数,定义为 const StatelessWidget({Key? key}).