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 na classe QuizStartPage #348

Closed
shonorio opened this issue Jan 11, 2025 · 0 comments · Fixed by #397
Closed

Substituir ModularState por State na classe QuizStartPage #348

shonorio opened this issue Jan 11, 2025 · 0 comments · Fixed by #397
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

Atualmente, a classe QuizStartPage utiliza ModularState para gerenciar o estado e injetar o QuizStartController. A proposta é substituir ModularState por State e injetar o QuizStartController via passagem de parâmetro no construtor da classe.

Motivação

  • Desacoplamento: Remover a dependência direta do flutter_modular para gerenciar o estado e injeção de dependência.
  • Testabilidade: Facilitar a criação de testes unitários, pois o QuizStartController será passado como dependência.
  • Manutenção: Simplificar a manutenção do código, seguindo boas práticas de injeção de dependência.

Alterações Propostas

  1. Substituir ModularState por State na classe _QuizStartPageState.
  2. Adicionar QuizStartController como parâmetro no construtor da classe QuizStartPage.
  3. Remover a dependência do flutter_modular para gerenciar o estado.

Código Atual

import 'package:flutter/material.dart';
import 'package:flutter_modular/flutter_modular.dart';

import '../../../authentication/presentation/shared/page_progress_indicator.dart';
import 'quiz_start_controller.dart';

class QuizStartPage extends StatefulWidget {
  const QuizStartPage({Key? key}) : super(key: key);

  @override
  State<QuizStartPage> createState() => _QuizStartPageState();
}

class _QuizStartPageState
    extends ModularState<QuizStartPage, QuizStartController> {
  @override
  Widget build(BuildContext context) {
    controller.start();

    return const PageProgressIndicator(
      progressMessage: 'Carregando...',
      progressState: PageProgressState.loading,
      child: SizedBox.shrink(),
    );
  }
}

Código Proposto

import 'package:flutter/material.dart';

import '../../../authentication/presentation/shared/page_progress_indicator.dart';
import 'quiz_start_controller.dart';

class QuizStartPage extends StatefulWidget {
  final QuizStartController controller;

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

  @override
  State<QuizStartPage> createState() => _QuizStartPageState();
}

class _QuizStartPageState extends State<QuizStartPage> {
  @override
  void initState() {
    super.initState();
    widget.controller.start();
  }

  @override
  Widget build(BuildContext context) {
    return const PageProgressIndicator(
      progressMessage: 'Carregando...',
      progressState: PageProgressState.loading,
      child: SizedBox.shrink(),
    );
  }
}

Passos para Implementação

  1. Remover a dependência do flutter_modular no arquivo pubspec.yaml (se não for mais necessária em outros lugares).
  2. Atualizar todos os locais onde QuizStartPage é instanciado para passar o QuizStartController como parâmetro.
  3. Atualizar os testes unitários para refletir as mudanças na injeção de dependência.

Testes

  • Verificar se todos os testes existentes continuam passando após as alterações.
  • Adicionar novos testes para garantir que o QuizStartController está sendo corretamente injetado e utilizado.

Considerações Finais

Essa mudança deve melhorar a clareza e a testabilidade do código, além de seguir boas práticas de injeção de dependência. Certifique-se de que todas as dependências e testes sejam atualizados conforme necessário.

@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
@pedrox-hs pedrox-hs self-assigned this Jan 18, 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