1
resposta

Como eu faço para usar o tem default quando volto para home?

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?

1 resposta

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:

  1. No 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"));
  }
}
  1. No arquivo 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.