构造器颤振

时间:2020-10-16 20:03:03

标签: flutter dart

当我在Flutter中重构窗口小部件时,将生成以下代码。但是,我仍然不明白它的用途以及它的用途。我删除了它,没有任何问题。一切正常。有什么用?

const ReusableCard({
    Key key,
  }) : super(key: key);

这是重构的完整类:

class ReusableCard extends StatelessWidget {
  const ReusableCard({
    Key key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.all(15),
      decoration: BoxDecoration(
        color: Color(0xFF1D1E33),
        borderRadius: BorderRadius.circular(10.0),
      ),
    );
  }
}

1 个答案:

答案 0 :(得分:1)

Dart Language tour中所述:

子类不会从其超类继承构造函数。声明没有构造函数的子类仅具有默认(没有参数,没有名称)构造函数。 [...] 默认情况下,子类中的构造函数会调用超类的未命名,无参数的构造函数。

因此,在您的示例中,删除此构造函数将调用Stateless Widget class的默认构造函数。从此类的文档中可以看到,可以将名为key的可选参数传递给它。您要求的ReusableCard构造函数允许您使用此关键参数创建无状态小组件。如果删除此构造函数,将无法为该小部件提供密钥。

Key是Flutter框架中的小部件和其他元素的标识符。在某些必须标识小部件的情况下,需要使用它。最常见的示例是当您尝试交换(或删除)列表中的窗口小部件时。要认识到它们已更改,Flutter框架需要使用密钥来识别它们。如果您不执行上述任何一种操作,或者根本不使用键,则可以删除此构造函数。

here可以观看Google播放的有关Flutter键的精彩官方视频。