【问题标题】:Can't define constructor with optional parameters Dart无法使用可选参数 Dart 定义构造函数
【发布时间】:2021-11-22 15:53:46
【问题描述】:

我无法定义这个构造函数:

class Artists_Showroom extends StatefulWidget {
  Artists_Showroom( //error 1 here
      {Key key,
      @required this.lista,
      @required this.database,
      @required this.artistaCorrente,
      [this.color = null]}). //error 2 here on first square brachet
      : super(key: key);
  final List<Artista> lista;
  final Artista artistaCorrente;
  final Database database;
  final Color color;

错误 1:

All final variables must be initialized, but 'color' isn't.
Try adding an initializer for the field.

错误 2:

Expected to find '}'.
Expected an identifier.

它一直工作到现在,因为我需要添加一个可选参数(在这种情况下它是一种颜色)。我只是从来没有使用过可选参数,所以我不知道如何声明它们。

我做了一些研究,并尝试了 StackOverflow 的不同解决方案,但没有一个有效。

【问题讨论】:

    标签: flutter dart constructor optional-parameters


    【解决方案1】:

    您不能同时拥有Positional 可选参数[]Named 可选参数{}。看看this。 如果您也想保留 Named 参数,您可以执行以下操作。

    class Artists_Showroom extends StatefulWidget {
      const Artists_Showroom({
        Key key,
        @required this.lista,
        @required this.database,
        @required this.artistaCorrente,
        this.color,
      }) : super(key: key);
    
      final List<Artista> lista;
      final Artista artistaCorrente;
      final Database database;
      final Color color;
    }
    

    【讨论】:

    • 好的,但是这次我每次调用构造函数时都需要传递“null”值吗?
    • 不,你没有。如果你不通过任何东西,那么它就是隐含的空值。只需像Artis_Showroom(lista: lista, database:database, artistaCorrente: artistaCorrente) 一样调用它,然后颜色就是null
    • 完美的解释,我不知道为什么 dart 文档像你一样不清楚
    猜你喜欢
    • 2020-11-17
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多