Olá Walter, tudo bem ?
Começando pelo @
isso muitas vezes chamamos de Anotação, então quando temos @override
, dizemos que é uma anotação que indica que algo está sendo sobrescrito
E ai chegamos na sua segunda questão, o que está sendo sobrescrito? Um método!
Ou seja quando herdamos de StatelessWidget
, Widget
, StatefulWidget
temos que sobrescrever o método build()
, isto porque elas são classes abstratas e delegam a nós a criar o comportamento :)
Então podemos ler:
class ListaTransferencias extends StatelessWidget{
@override
Widget build(BuildContext context) {
Que estamos sobreescrevendo a função build
que irá devolver um Widget
e que recebe um BuildContext
, a grande característica da sobrescrita de métodos é que não podemos modificar o retorno e os parâmetros da função =D
Um outro exemplo, que acredito que já viu em outras linguagens, mas que teremos no curso também é o:
@override
String toString()
Existem outras anotações como o @deprecated
que indica que um método está depreciado, e deve ser evitado, por exemplo, poderíamos ter uma classe:
class Conta {
@deprecated
String mostraSaldo(){
return "Saldo: 1000"
}
}
`
Se fizermos um:
var conta = Conta():
conta.mostraSaldo();
Teremos um aviso de que : "mostraSaldo is deprecated and shouldn't be used"
Então é basicamente isso, @
irá indicar anotações, cada uma pode ter um sentido diferente, e o @override
indica que iremos sobrescrever um método de uma classe mãe :)
Abraços e Bons Estudos!