O que são chaves na classe de widgets Stateless?

Nos documentos do flutter, há um exemplo de código para uma subclasse de widget sem estado, conforme mostrado:

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

  @override
  Widget build(BuildContext context) {
    return new Container(color: const Color(0xFF2DBD3A));
  }
}

e isto

class Frog extends StatelessWidget {
  const Frog({
    Key key,
    this.color: const Color(0xFF2DBD3A),
    this.child,
  }) : super(key: key);

  final Color color;

  final Widget child;

  @override
  Widget build(BuildContext context) {
    return new Container(color: color, child: child);
  }
}

O que é uma chave e quando esse super construtor deve ser usado? Parece que se você tem seu próprio construtor, precisa ter {Key key} por quê? Já vi outros exemplos em que a super palavra-chave énão usado, então é aqui que está minha confusão.

questionAnswers(1)

yourAnswerToTheQuestion