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

Correção de bug em CentavosInputFormatter #92

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

ClodoaldoRibeiro
Copy link
Contributor

No description provided.

@codecov
Copy link

codecov bot commented Aug 22, 2023

Codecov Report

All modified lines are covered by tests ✅

Comparison is base (4c8fe3f) 89.00% compared to head (2be6552) 89.02%.
Report is 1 commits behind head on master.

❗ Current head 2be6552 differs from pull request most recent head 8fab546. Consider uploading reports for the commit 8fab546 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master      #92      +/-   ##
==========================================
+ Coverage   89.00%   89.02%   +0.01%     
==========================================
  Files          29       29              
  Lines         582      583       +1     
==========================================
+ Hits          518      519       +1     
  Misses         64       64              
Files Coverage Δ
lib/src/formatters/centavos_input_formatter.dart 88.88% <100.00%> (+0.25%) ⬆️

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@rubensdemelo
Copy link
Collaborator

Obrigado pelo PR, vou aprova-lo. Pode me detalhar quando este erro ocorre? Pois quero evoluir os testes unitários e detectar este tipo de situação.

@ClodoaldoRibeiro
Copy link
Contributor Author

Sim, o erro ocorre quando o usuário usa esse formatador e o primeiro numero digitado for o zero. Com isso ele assume a formatação. Ex: 0,
Nas analises eu verifiquei que ele estaca tentando fazer um parse de 0 para inteirom retornando null, que foi nosso caso que foi tratado.

@rubensdemelo
Copy link
Collaborator

Mas este é o conportamento esperado. Como o usuario vai digitar, por exempli, R$ 0,09 ?

@ClodoaldoRibeiro
Copy link
Contributor Author

ClodoaldoRibeiro commented Aug 23, 2023

Nese caso, ele digite 9, o 9 vai para o final como o último elemento, ficando 0,09. Ele não precisa digitir os zeros.

@rubensdemelo
Copy link
Collaborator

Beleza. Eu vou testar com calma e amanha ja faço o merge quando estiver tudo certo. Muito obrigado

@rubensdemelo
Copy link
Collaborator

Nese caso, ele digite 9, o 9 vai para o final como o último elemento, ficando 0,09. Ele não precisa digitir os zeros.

image

Neste ponto, quando o usuário digita 0, a formatação nao deveria ocorrer?

@ClodoaldoRibeiro
Copy link
Contributor Author

Neste ponto, quando o usuário digita 0, a formatação nao deveria ocorrer?

Também podemos usar essa abordagem, mas hoje quando o primeiro número digitado for zero, nenunha formatação está sendo realizada.

// apaga o campo quando os valores foram zero.
if (numero == 0 && int.tryParse(centsValue) == 0) {
return const TextEditingValue(
text: "",
selection: TextSelection.collapsed(offset: 0),
);

}

@rubensdemelo
Copy link
Collaborator

Neste ponto, quando o usuário digita 0, a formatação nao deveria ocorrer?

Também podemos usar essa abordagem, mas hoje quando o primeiro número digitado for zero, nenunha formatação está sendo realizada.

// apaga o campo quando os valores foram zero. if (numero == 0 && int.tryParse(centsValue) == 0) { return const TextEditingValue( text: "", selection: TextSelection.collapsed(offset: 0), ); }

Mas no exemplo acima, todos os numeros digitados foram 0. Ainda nao ficou claro sobre esta situacao.

@ClodoaldoRibeiro
Copy link
Contributor Author

Lembrando que o estado inicial do campo é sem formatação, apenas o campo vazio, @rubensdemelo da forma que está hoje, quando o primeiro número digitado for o zero, a formatação vai ficar conforme a imagem ou exemplo: R$ 0, ou 0,. Eu entendo que esse não seja uma formatação correta, R$ 0, não deveria ser válida.

O ajuste que realizei, caso o campo esteja vazio, sem nada para formatar, e o primeiro número digitado for o zero, então não realizo formatação alguma, ficando o campo como está, no estado de vazio.

Acredito que você esteja se questionando por que não é apresentado a formtação 0,00 ou R$ 0,00 caso o primeiro número digitado seja zero, mas não vejo muito sentido fazer uma foramtação assim. Esse deveria ser o estado inicial do campo, que hoje é mostrado como vazio, sendo semelhante aos campos do sistena bancários.

@rubensdemelo
Copy link
Collaborator

@ClodoaldoRibeiro

Entendo o seu ponto. Mas o comportamento de hoje, possibilita a formatação para o valores em Centavos, como R$ 0,09.

Eu vou criar uma branch nova com essa mudança e fazer os testes para visualizar melhor este caso.

@ClodoaldoRibeiro
Copy link
Contributor Author

Beleza @rubensdemelo, dá uma olhada na ramificação que te mandei. Ela também permite fazer essa formtação.

@rubensdemelo
Copy link
Collaborator

Screenshot 2023-09-30 at 15 18 11

@rubensdemelo
Copy link
Collaborator

Em ambos os casos, digitando qualquer valor maior que 0, a formatação esta correta:

Screenshot 2023-09-30 at 15 19 00

Com o formatter atual, se o valor digitado for 0:
Screenshot 2023-09-30 at 15 21 03

Com o seu PR, se o valor digitado for 0:

Screenshot 2023-09-30 at 15 21 33

Lembro-me que a implementacao deste comportamento foi para seguir o "padrao" de alguns bancos, como BB, Itau e Nubank. Pois o formatter para centavos esta relacionado com valores monetarios.

Quando o usuario digitar 0 no teclado, este eh o valor que deve ser exibido na tela. O feedback real do que o usuario fez: Digitou 0.

Exemplo no app do BB, ao digital 9:
IMG_3400

Exemplo no app do BB, ao digital 0:

IMG_3401

Entendo que nao existe certo e errado neste caso mas acredito que seguir os padroes de outros aplicativos, facilita a experiencia do usuario.

@ClodoaldoRibeiro
Copy link
Contributor Author

Verdade, vou ajustar esse comportamento para ficar de forma semelhante.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants