Middle
Como são utilizados os objetos imutáveis no Flutter?
sobes.tech IA
Resposta da IA
No Flutter, objetos imutáveis (por exemplo, widgets) desempenham um papel central no mecanismo de redesenho da interface do utilizador.
Aspectos-chave do uso:
- Eficiência no redesenho: Flutter pode comparar eficazmente os widgets na árvore de elementos, uma vez que as suas propriedades não mudam após a criação. Se as propriedades do widget pai não mudaram, os seus filhos, que são widgets imutáveis, também não precisam de ser redesenhados, o que otimiza o desempenho.
- Previsibilidade: Devido à imutabilidade das propriedades do widget, o seu estado está sempre claramente definido no momento da criação. Isto simplifica a depuração e a compreensão do fluxo de dados na aplicação.
- Segurança no fluxo: Como objetos imutáveis não podem ser alterados, eles são inerentemente seguros para o fluxo. Isto é importante em ambientes assíncronos, onde múltiplos threads podem interagir com os dados.
- Criação de um novo estado: Ao alterar os dados, em vez de mutar o objeto existente, cria-se uma nova instância do widget ou do objeto de estado com as propriedades atualizadas.
Exemplo de criação de um widget imutável StatelessWidget:
import 'package:flutter/material.dart';
class ImmutableWidget extends StatelessWidget {
final String text; // Campo final - torna-o imutável após a criação
const ImmutableWidget({Key? key, required this.text}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text(text);
}
}
Em StatefulWidget, o próprio widget é imutável, mas o seu objeto associado State é mutável e armazena o estado modificável. Quando o estado é alterado em State, chama-se setState(), que notifica o framework da necessidade de reconstruir os widgets usando o novo estado. Uma nova instância do widget é criada com as propriedades atualizadas, mas o widget antigo é comparado com o novo para determinar as mudanças mínimas na árvore de elementos.