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

但是,dart 中添加了健全的空安全性,并且 required 现在是一个需要传递给命名参数的关键字,以便在未传递此参数的情况下不会让编译器运行。它使您的代码更加严格和安全。

如果您确实认为此变量可以为 null,那么您可以通过在其后添加 ? 来更改类型,以便不需要必需的关键字,或者您可以为参数添加默认值。>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...