flutter中的required和@required有什么区别。它们之间有什么区别,我们什么时候需要使用它们?

如果我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,
          ),
        ),
      ),
    );
  }
}

回答

@required只是一个注释,允许分析器让您知道您缺少命名参数,仅此而已。所以你仍然可以编译应用程序,如果没有传递这个命名参数,可能会得到一个异常。

然而,sound null-safety 被添加到 dart,required现在是一个需要传递给命名参数的关键字,这样如果没有传递这个参数,它就不会让编译器运行。它使您的代码更加严格和安全。

如果你真的认为这个变量可以为空,那么你可以通过?在它后面添加 a 来更改类型,以便不需要必需的关键字,或者你可以为参数添加一个默认值。


以上是flutter中的required和@required有什么区别。它们之间有什么区别,我们什么时候需要使用它们?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>