Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Dart中是否可能只需要两个参数中的一个?_Flutter_Dart_Constructor - Fatal编程技术网

Flutter Dart中是否可能只需要两个参数中的一个?

Flutter Dart中是否可能只需要两个参数中的一个?,flutter,dart,constructor,Flutter,Dart,Constructor,我知道我可以使用@required要求一个参数,如下所示: class Foo{ String firstParam; String secondParam; Foo({@required this.firstParam, this.secondParam}); } 但是,我不知道如何只需要这两个参数中的一个而不同时需要这两个参数。使用断言,我有一些看起来像我想要的东西: class Foo{ String firstParam; String secondParam;

我知道我可以使用
@required
要求一个参数,如下所示:

class Foo{
  String firstParam;
  String secondParam;
  Foo({@required this.firstParam, this.secondParam});
}
但是,我不知道如何只需要这两个参数中的一个而不同时需要这两个参数。使用
断言
,我有一些看起来像我想要的东西:

class Foo{
  String firstParam;
  String secondParam;

  Foo({this.firstParam, this.secondParam}): assert(this.firstParam != null || this.secondParam!= null);
}
但是它在VS代码中不会警告我,并且在发布模式中不会使用断言


在Dart中有什么方法可以做到这一点吗?

我认为这是不可能的,尽管您可以将这两个参数都设置为必需的,并在需要时显式设置为null

我认为这是不可能的,尽管您可以将这两个参数都设置为必需参数,并在需要时显式设置为null,但请使用此选项并为您的断言提供一条消息:

class Foo {
  String firstParam;
  String secondParam;

  Foo({this.firstParam, this.secondParam})
      : assert(
          (firstParam != null || secondParam != null),
          'One of the parameters must be provided',
        );
}
警告:如果未提供任何参数:


使用此选项并为您的断言提供一条消息:

class Foo {
  String firstParam;
  String secondParam;

  Foo({this.firstParam, this.secondParam})
      : assert(
          (firstParam != null || secondParam != null),
          'One of the parameters must be provided',
        );
}
警告:如果未提供任何参数:


这不完全是我想要的,因为它没有在发布模式中使用(我已经使用了断言)。如果其中一个参数没有提供,我也不想编译我的应用程序。在这里,我可以编译,但如果我没有提供一个参数,它将抛出一个异常。这不是我想要的,因为它没有在发布模式中使用(我已经使用断言)。如果其中一个参数没有提供,我也不想编译我的应用程序。在这里,我可以编译,但如果我没有提供一个参数,它将抛出一个异常。