Flutter中是否推荐这种代码编写方式?

My *_*Car 1 dart flutter statelesswidget

我在 VS Code 中安装了Awesome Flutter SnippetsFlutter Snippets扩展。当我安装这两个扩展时,我可以使用一些键盘快捷键来生成小部件。

当我在代码中输入statelessW或并按 Enter 键时,它会生成如下所示:stlessStatelessWidget

statelessW

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

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
Run Code Online (Sandbox Code Playgroud)

stless

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

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
Run Code Online (Sandbox Code Playgroud)

可以看到上面两段代码是一样的,两段代码都使用({super.key});而不是({Key? key}) : super(key: key);.

是否建议在 Flutter 中使用({super.key});而不是使用({Key? key}) : super(key: key);?我将不胜感激任何帮助。先感谢您!

And*_*ija 6

这是自 Dart 2.17 以来的新功能 - 只是实现相同目标的简写。

更多详细信息请参见:https://codewithandrea.com/tips/dart-2.17-super-initializers/

我只需从上面的链接复制/粘贴示例:

旧语法:

class Person {
  Person(this.name);
  final String name;
}

// Old way: before Dart 2.17
class Employee extends Person {
  Employee(String name, this.salary) : super(name);
  final int salary;
}
Run Code Online (Sandbox Code Playgroud)

新语法:

// New way: Dart 2.17 and above
class Employee extends Person {
  Employee(super.name, this.salary);
  final int salary;
}
Run Code Online (Sandbox Code Playgroud)

也适用于命名参数:

class Person {
  Person({required this.name});
  final String name;
}

// New way: Dart 2.17 and above
class Employee extends Person {
  Employee({required super.name, required this.salary});
  final int salary;
}
Run Code Online (Sandbox Code Playgroud)