Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Substituir ModularState por State em ChatMainTalksPage #366

Open
shonorio opened this issue Jan 11, 2025 · 0 comments · May be fixed by #395
Open

Substituir ModularState por State em ChatMainTalksPage #366

shonorio opened this issue Jan 11, 2025 · 0 comments · May be fixed by #395
Assignees
Labels
dependencies Pull requests that update a dependency file deprecation Para destacar o uso de componentes obsoletos good first issue Good for newcomers refactor Envolve melhorias no código, como substituir o componentes obsoletos

Comments

@shonorio
Copy link
Collaborator

Descrição

A classe _ChatMainTalksPageState atualmente estende ModularState, que é uma abordagem antiga para gerenciar o estado e a injeção de dependência no Flutter Modular. A proposta é substituir ModularState por State e injetar o ChatMainTalksController via passagem de parâmetro no construtor.

Motivação

  • Manutenção: A utilização de ModularState está obsoleta e não é mais recomendada.
  • Testabilidade: A injeção de dependência via construtor facilita a criação de testes unitários.
  • Clareza: A injeção explícita de dependências torna o código mais claro e fácil de entender.

Alterações Propostas

  1. Substituir ModularState por State.
  2. Injetar ChatMainTalksController via construtor.
  3. Remover a dependência do Modular para gerenciar o estado.

Código Antigo

class _ChatMainTalksPageState
    extends ModularState<ChatMainTalksPage, IChatMainTalksController> {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: DesignSystemColors.systemBackgroundColor,
      child: Observer(
        builder: (_) {
          return bodyBuilder(controller.currentState);
        },
      ),
    );
  }
}

Código Novo

class _ChatMainTalksPageState extends State<ChatMainTalksPage> {
  final IChatMainTalksController controller;

  _ChatMainTalksPageState(this.controller);

  @override
  Widget build(BuildContext context) {
    return Container(
      color: DesignSystemColors.systemBackgroundColor,
      child: Observer(
        builder: (_) {
          return bodyBuilder(controller.currentState);
        },
      ),
    );
  }
}

Ajustes no ChatMainTalksPage

class ChatMainTalksPage extends StatefulWidget {
  final IChatMainTalksController controller;

  const ChatMainTalksPage({Key? key, required this.controller}) : super(key: key);

  @override
  _ChatMainTalksPageState createState() => _ChatMainTalksPageState(controller);
}

Impacto

  • Compatibilidade: A mudança não deve impactar outras partes do código, desde que o controller seja corretamente injetado.
  • Testes: Os testes unitários devem ser atualizados para refletir a nova forma de injeção de dependência.

Passos para Implementação

  1. Substituir ModularState por State na classe _ChatMainTalksPageState.
  2. Adicionar o parâmetro controller no construtor de _ChatMainTalksPageState.
  3. Atualizar a classe ChatMainTalksPage para receber o controller e passá-lo para o State.
  4. Remover qualquer dependência desnecessária do Modular.

Testes

Certifique-se de que todos os testes unitários e de integração continuem passando após a alteração. Caso necessário, ajuste os testes para refletir a nova forma de injeção de dependência.

@shonorio shonorio added dependencies Pull requests that update a dependency file deprecation Para destacar o uso de componentes obsoletos refactor Envolve melhorias no código, como substituir o componentes obsoletos good first issue Good for newcomers labels Jan 11, 2025
@RoxyRoses RoxyRoses self-assigned this Jan 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file deprecation Para destacar o uso de componentes obsoletos good first issue Good for newcomers refactor Envolve melhorias no código, como substituir o componentes obsoletos
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants