ulu*_*ek 7 named-parameters required dart flutter
如果我required从命名参数中删除,它会给我一个错误:
参数 'color' // 因其类型而不能具有值 'null',但隐式默认值为 'null'。
它们之间有什么区别,我们什么时候需要使用它们?
class RoundedButton extends StatelessWidget {
late final Color color;
final String title;
final VoidCallback? onPressedInput;
RoundedButton(
{required this.color,
required this.title,
@required this.onPressedInput});
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.symmetric(vertical: 16.0),
child: Material(
color: color,
borderRadius: BorderRadius.circular(30.0),
elevation: 5.0,
child: MaterialButton(
onPressed: onPressedInput,
minWidth: 200.0,
height: 42.0,
child: Text(
title,
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
Jos*_*ges 12
@required只是一个注释,允许分析器让您知道您缺少命名参数,仅此而已。所以你仍然可以编译应用程序,如果没有传递这个命名参数,可能会得到一个异常。
然而,sound null-safety 被添加到 dart,required现在是一个需要传递给命名参数的关键字,这样如果没有传递这个参数,它就不会让编译器运行。它使您的代码更加严格和安全。
如果你真的认为这个变量可以为空,那么你可以通过?在它后面添加 a 来更改类型,以便不需要必需的关键字,或者你可以为参数添加一个默认值。
https://dart.dev/null-safety/faq#how-does-required-compare-to-the-new-required-keyword
\n\n\n@required 注释标记必须传递的命名参数;如果\n不是,分析器会报告提示。
\n对于 null 安全性,具有不可为 null 类型的命名参数必须\n没有默认值或用新的 required 关键字进行标记。\n否则,\xe2\x80\x99 不可以为 null 就没有意义,因为未传递时 \nit 将默认为 null。
\n当从遗留代码调用 null 安全代码时,required 关键字的处理方式与 @required 注释完全相同:未能提供\n参数将导致分析器提示。
\n当从 null 安全代码调用 null 安全代码时,未能提供\n必需的参数将导致错误。
\n这对移民意味着什么?如果在之前没有@required 的地方添加required,请小心。任何未传递新所需参数的调用者都将不再编译。相反,您可以添加默认值或使参数类型可为空。
\n
| 归档时间: |
|
| 查看次数: |
1523 次 |
| 最近记录: |