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 ComposeTweetPage #365

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

Substituir ModularState por State em ComposeTweetPage #365

shonorio opened this issue Jan 11, 2025 · 0 comments · May be fixed by #398
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 ComposeTweetPage atualmente utiliza ModularState para gerenciar o estado e obter a instância do ComposeTweetController. A proposta é substituir ModularState por State e injetar o ComposeTweetController via passagem de parâmetro no construtor.

Alterações Sugeridas

  1. Remover a herança de ModularState e substituir por State<ComposeTweetPage>.
  2. Adicionar o ComposeTweetController como parâmetro no construtor da classe ComposeTweetPage.
  3. Remover a injeção de dependência via Modular e passar o controller diretamente para o State.

Código Atual

class _ComposeTweetPageState
    extends ModularState<ComposeTweetPage, ComposeTweetController>
    with SnackBarHandler {
  // ...
}

Código Proposto

class ComposeTweetPage extends StatefulWidget {
  const ComposeTweetPage({
    Key? key,
    this.title = 'Publicar',
    this.showAppBar = false,
    required this.controller, // Adicionar o controller como parâmetro
  }) : super(key: key);

  final String title;
  final bool showAppBar;
  final ComposeTweetController controller; // Controller injetado

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

class _ComposeTweetPageState extends State<ComposeTweetPage> with SnackBarHandler {
  final String inputHint = 'Deixe seu comentário';
  final String anonymousHint = 'Sua publicação é anônima. As usuárias do app podem comentar sua publicação, mas só você pode iniciar uma conversa com elas.';
  List<ReactionDisposer>? _disposers;
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
  PageProgressState _currentState = PageProgressState.initial;

  // Acesso ao controller via widget.controller
  ComposeTweetController get controller => widget.controller;

  // Restante do código permanece inalterado
  // ...
}

Benefícios

  • Desacoplamento: Remove a dependência direta do Modular, tornando o código mais modular e testável.
  • Testabilidade: Facilita a injeção de mocks ou stubs para testes unitários.
  • Clareza: Torna explícita a dependência do controller, melhorando a legibilidade do código.

Tarefas

  • Atualizar a classe ComposeTweetPage para receber o controller como parâmetro.
  • Substituir ModularState por State<ComposeTweetPage>.
  • Atualizar os locais onde a página é instanciada para passar o controller corretamente.
  • Remover qualquer referência ao Modular relacionada à injeção do controller.
@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 14, 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