Como eu faço para usar o tem default quando volto para home? Estou tentando com o cubit, mas entra em loop infinito e fica piscando. Se esse fosse um requisito, eu deveria fazer mudar o tema da página somente e não de toda aplicação?
Como eu faço para usar o tem default quando volto para home? Estou tentando com o cubit, mas entra em loop infinito e fica piscando. Se esse fosse um requisito, eu deveria fazer mudar o tema da página somente e não de toda aplicação?
Olá, Gabriel.
Tudo bem?
O loop infinito que você mencionou pode estar acontecendo porque a função changeTheme()
está sendo chamada repetidamente, causando a re-renderização contínua da tela.
Para resolver isso, uma abordagem seria garantir que a mudança de tema ocorra apenas uma vez quando você volta para a Home. Você pode fazer isso verificando se o tema atual já é o tema padrão antes de tentar alterá-lo novamente.
Aqui está um exemplo de como você pode implementar isso:
theme_cubit.dart
, adicione um método para resetar o tema para o padrão:class ThemeCubit extends Cubit<ThemeData> {
ThemeCubit() : super(MyThemes.getTheme("default"));
void changeTheme(String genre) {
emit(MyThemes.getTheme(genre));
}
void resetTheme() {
emit(MyThemes.getTheme("default"));
}
}
home_screen.dart
(ou onde você gerencia a tela inicial), chame o método resetTheme()
ao voltar para a Home:@override
Widget build(BuildContext context) {
final themeCubit = context.read<ThemeCubit>();
// Verifique se o tema atual não é o padrão antes de resetar
if (themeCubit.state != MyThemes.getTheme("default")) {
themeCubit.resetTheme();
}
return Scaffold(
// Código da Home
);
}
Essa abordagem evita o loop infinito, pois a mudança de tema só ocorre se o tema atual não for o padrão. Dessa forma, você garante que o tema da Home seja sempre o padrão sem causar re-renderizações desnecessárias.
Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.