1
resposta

Por que sempre usam o final nas declarações de variáveis?

Estou fazendo o curso de Flutter e em praticamente todas as declarações de variáveis feitas pelo instrutor utiliza-se o modificador "final".

Por que? Alguma exigência do Dart/Flutter? É uma boa prática?

Exemplo retirado de uma das aulas.

Future<List<Contact>> findAll() async {

  final Database db = await getDatabase();
  final List<Map<String, dynamic>> result = await db.query('contacts');
  final List<Contact> contacts = List();
  for (Map<String, dynamic> row in result) {
    final Contact contact = Contact(
      row['id'],
      row['name'],
      row['account_number'],
    );
    contacts.add(contact);
  }
    return contacts; 
}
1 resposta

Olá Camila, tudo bem com você?

Realmente quando estamos trabalhando com flutter iremos utilizar muitas vezes o final

A razão principal é para ter um objeto imutável, o que é muito importante para os nosso widgets :)

Entretanto normalmente fica uma questão de quando utilizar const ou final, e a diferença está basicamente em quando saberemos o valor, utilizando como base o seu exemplo, como estamos trabalhando com o banco de dados, não temos o valor em tempo de compilação, apenas em tempo de execução, e nessa situação utilizamos sempre o final, quando queremos um valor imutável que teremos o valor desde o começo, como por exemplo uma string ou uma lista, podemos utilizar o const

Veja também que sempre que criamos um widget, por exemplo:

class Exemplo extends StatelessWidget {
    const erroDeCompilacao = "30";
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

Teremos um erro indicando que o campo ou deve ser uma constante estática, ou um final e na maioria das vezes iremos querer trabalhar com um valor final do que algo estático :)

Conseguiu Compreender?

Realmente é um pouco estranho para quem está acostumado com outras linguagens, mas com certeza é uma boa prática :)

Abraços e Bons Estudos!