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 PenhasDrawerPage #352

Open
shonorio opened this issue Jan 11, 2025 · 0 comments
Open

Substituir ModularState por State em PenhasDrawerPage #352

shonorio opened this issue Jan 11, 2025 · 0 comments
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 PenhasDrawerPage atualmente utiliza ModularState para gerenciar seu estado e obter uma instância do PenhasDrawerController. Esta issue propõe a substituição de ModularState por State e a injeção do PenhasDrawerController via passagem de parâmetro no construtor.

Motivação

  • Remover a dependência direta do flutter_modular para gerenciar o estado.
  • Facilitar testes unitários, permitindo a injeção de dependências de forma explícita.
  • Seguir boas práticas de injeção de dependência.

Alterações Propostas

  1. Substituir ModularState<PenhasDrawerPage, PenhasDrawerController> por State<PenhasDrawerPage>.
  2. Adicionar um parâmetro PenhasDrawerController no construtor de PenhasDrawerPage.
  3. Remover a lógica de injeção do Modular e passar o controlador diretamente.

Código Atual

class _PenhasDrawerPageState
    extends ModularState<PenhasDrawerPage, PenhasDrawerController> {
  // ...
}

Código Proposto

class PenhasDrawerPage extends StatefulWidget {
  const PenhasDrawerPage({
    Key? key,
    this.title = 'Penhas Drawer',
    required this.controller,
  }) : super(key: key);

  final String title;
  final PenhasDrawerController controller;

  @override
  _PenhasDrawerPageState createState() => _PenhasDrawerPageState();
}

class _PenhasDrawerPageState extends State<PenhasDrawerPage> {
  final double listHeight = 80;
  final Color drawerGrey = const Color.fromRGBO(239, 239, 239, 1.0);

  PenhasDrawerController get controller => widget.controller;

  @override
  Widget build(BuildContext context) {
    // O restante do código permanece o mesmo
  }
}

Impacto

  • Todas as instâncias que criam PenhasDrawerPage precisarão passar o PenhasDrawerController explicitamente.
  • Melhoria na testabilidade e desacoplamento do código.

Testes

  • Verificar se todos os testes existentes continuam passando após a refatoração.
  • Adicionar testes unitários para garantir que o controlador seja injetado corretamente.

Observações

  • A refatoração não deve alterar a funcionalidade existente, apenas a forma como o controlador é injetado.
@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
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

No branches or pull requests

1 participant