Giter Site home page Giter Site logo

flutterbootcamp / brasil_fields Goto Github PK

View Code? Open in Web Editor NEW
132.0 132.0 40.0 9.56 MB

O jeito mais fácil de utilizar padrões e formatos brasileiros em seu projeto

Home Page: https://flutterbootcamp.github.io/brasil_fields/#/

License: Other

Dart 69.98% Objective-C 0.03% Shell 0.36% Kotlin 0.08% Swift 0.78% HTML 1.22% CMake 12.55% C++ 14.05% C 0.96%

brasil_fields's People

Contributors

allanwolski avatar ascenio avatar clodoaldoribeiro avatar cpelegrin avatar edufolly avatar fogaiht avatar gabrielpagotto avatar jfelipe72 avatar joaovvrodrigues avatar jradelmo avatar lstonussi avatar ojmarcelino avatar perez-danilo avatar rubensdemelo avatar silasrm avatar vitoramaral10 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

brasil_fields's Issues

Alteração Formatter para placa de veículos

Olá! Este pacote é muito bom, me ajuda muito em varias partes do meu código, meus parabéns.

Gostaria de pedir que verifique fazer uma inclusão no formatter de placas, atualmente seu package tem suporte para as placas antigas, AAA-1234 e também para as placas do mercosul, AAA-1A23, contudo existe outro formato, AAA-12A3, neste caso a letra está presente no sexto caractere.

Qualquer dúvida estou a disposição.

Como colocar formatação em um text form field global?

ola pessoal eu estou com esse text form field:

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

class GlobalTextField extends StatelessWidget {
  final FormFieldValidator<String?> validator;
  final String hintText;
  final String labelText;
  final TextInputType keyboartType;
  final TextEditingController? textEditingController;

  const GlobalTextField({
    Key? key,
    required this.validator,
    required this.hintText,
    required this.labelText,
    required this.keyboartType,
    this.textEditingController,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return TextFormField(
      controller: textEditingController,
      validator: validator,
      style: const TextStyle(color: Colors.black),
      keyboardType: keyboartType,
      decoration: InputDecoration(
        border: InputBorder.none,
        hintText: hintText,
        labelText: labelText,
        focusedBorder: const UnderlineInputBorder(
          borderSide: BorderSide(color: Colors.black),
        ),
        enabledBorder: const UnderlineInputBorder(
          borderSide: BorderSide(color: Colors.black),
        ),
        floatingLabelBehavior: FloatingLabelBehavior.never,
        labelStyle: const TextStyle(color: Colors.black, fontSize: 16),
        hintStyle: const TextStyle(color: Colors.black, fontSize: 16),
      ),
    );
  }
}

Ele e global, ou seja eu uso em diversas partes do app, como eu colocaria a mascara somente em alguns que eu precise? ja tentei de diversas formas mas ainda nao consegui

Problema na Placa de veiculo

Bom dia, obrigado pelo pacote, é muito útil.

Notei um problema com relação a Placa de veiculo, isso se repete em outros pacotes de mascara também.

Quando troco para o teclado numérico, ele permite add apenas um número e volta para o teclado padrão, sabe se tem alguma solução para isso?

CentavosInputFormatter problema inserir valores

No formatador de centavos, utilizado da forma mostrada abaixo, obtive o seguinte problema:

  • Ao começar a digitar no campo com o valor 9, e somente 9, o formatador coloca o digito no local errado da string não deixando o usuário apagar o que foi inserido. Só é possível apagar após inserir outro dígito, sendo ele qualquer outro valor.
    Gif demonstrando o problema
TextFormField(
  focusNode: _quantityFN, 
  autocorrect: false,
  decoration: InputDecoration(labelText: 'Quantidade'),
  keyboardType: TextInputType.number,
  controller: _quantity,
  inputFormatters: [
    FilteringTextInputFormatter.digitsOnly,
    CentavosInputFormatter(),
  ],
  onChanged: (value) {
    print(value);
  }
),

Melhoria nos Utils de data

Seria possível faz um Util que passe a data DD/MM/AAAA e retorne o .toIsoString() dela? Acho que seria interessante pois varios backends esperam esse padrão hoje em dia. E tendo essa função seria muito simples pegar a string que temos que vem do seu pacote e transforme em toIsoString.

Pedido de adição

Queria agradecer o bom trabalho com esse pacote incrivel, queria recomendar, se possivel, uma adição na parte de moedas no RealInputFormater. Quando o usuario começar a digitar endereçar esse numero como centavos.
Por exemplo, digitando 2 digitos apresentar 0,xx ou um digito 0,0x. A partir do 3 ser x,xx ...
Mais uma vez parabens pelo pacote!

Erro ao digitar 0 como primeiro dígito do campo

No formatador de centavos, quando digita "0" com o campo vazio, uma exception é lançada, mas o comportamento ainda continua consistente se continuar digitando.

TextFormField(
  controller: _controller,
  inputFormatters: [
    FilteringTextInputFormatter.digitsOnly,
    CentavosInputFormatter(),
  ],
),

testar backspace/apagar

todos os formatters devem ter os testes em que o backspace 'e pressionado, evitando erros como o #57

os valores informados devem comecar com 9

Bug no cursor

O cursor está saindo do ponto X e voltando para o início, no ponto 0.

Screenshot

TextFormField( inputFormatters: [ WhitelistingTextInputFormatter.digitsOnly, CpfInputFormatter(), ], );

Obs: Métodos para obter os valores CPF e CPNJ não estão sendo formatados

Boa tarde!

Os métodos para obter os valores do CPF e CPNJ não estão sendo formatados como mostra na descrição do package.

Não sei se deixaram de adicionar essas funcionalidades depois da atualização, ou se esqueceram de corrigir a descrição.

Mas, só passando esse erro como observação para vocês. Fora isto, excelente pacote!

brasil_fields: 1.1.1

UtilBrasilFields.obterCpf('11122233344') (111.222.333-44)
UtilBrasilFields.obterCnpj('11222333444455') (11.222.333/4444-55)

Aceitar mais de 2 decimais no componente

Parabéns pelo componente, já está me ajudando bastante.
Li a documentação e não encontrei opção de configurar mais que 2 decimais. Exemplo o preço de combustivel 5,329 e também tem preços que tem muitas decimais R$ 112,456789.
Teria como parametrizar para aceitar mais decimais ?
Obrigado !

getTextBeforeCursor/getSelectedText on inactive InputConnection

Já tinha um form completo e funcionando no meu app em Flutter e tentei usar os formatters dessa biblioteca, porém ao tentar digitar os respectivos dados nos campos de CPF e TELEFONE, respectivamente, fica assim:
2

Também recebo isso no console:
getTextBeforeCursor on inactive InputConnection
getSelectedText on inactive InputConnection

E esse é meu input field:

TextFormField(
	inputFormatters: inputFormatters,
	onFieldSubmitted: onSumitted,
	textInputAction: textInputAction,
	obscureText: this._obscureText ? (snapshot.data ?? false) : false,
	style: TextStyle(color: Colors.white),
	keyboardType: _textInputType,
	focusNode: focusNode,
	decoration: InputDecoration(
		suffixIcon: this._obscureText
			? IconButton(
				icon: Icon(
					snapshot.data != null
						? (snapshot.data
							? FontAwesomeIcons.eyeSlash
							: FontAwesomeIcons.eye)
						: null,
					color: Colors.white),
				onPressed: () {
				  _signUpBloc.inObscurePasswordText.add(!snapshot.data);
				})
			: null,
		contentPadding:
			EdgeInsets.symmetric(horizontal: 24, vertical: 16),
		filled: true,
		fillColor: Color.fromARGB(80, 255, 255, 255),
		border: OutlineInputBorder(
			borderSide: BorderSide(width: 1, color: Colors.transparent),
			borderRadius:
				const BorderRadius.all(const Radius.circular(35))),
		enabledBorder: OutlineInputBorder(
			borderSide: BorderSide(width: 1, color: Colors.transparent),
			borderRadius:
				const BorderRadius.all(const Radius.circular(35))),
		focusedBorder: OutlineInputBorder(
			borderSide: BorderSide(
				color: Theme.of(context).accentColor, width: 1),
			borderRadius:
				const BorderRadius.all(const Radius.circular(35))),
		errorBorder: OutlineInputBorder(
			borderSide: BorderSide(color: Colors.red, width: 1),
			borderRadius:
				const BorderRadius.all(const Radius.circular(35))),
		focusedErrorBorder: OutlineInputBorder(
			borderSide: BorderSide(color: Colors.red, width: 1),
			borderRadius:
				const BorderRadius.all(const Radius.circular(35))),
		errorStyle: TextStyle(
			fontSize: 14,
			fontWeight: FontWeight.bold,
			color: Colors.red[200]),
		hintText: _hintText,
		hintStyle: TextStyle(color: Colors.white)),
	textCapitalization: _textCapitalization,
	validator: _validator,
	//onSaved: ,
	controller: _fieldController,
);

que está dentro de um widget customizado onde recebo diversos parâmetros que setam as configs do meu TextFormField, inclusive a variável "inputFormatters" é uma lista do tipo "TextInputFormatter" que passo. Passei CpfInputFormatter() para o campo de CPF e TelefoneInputFormatter() para o campo de telefone.

Alguém já passou por isso?
Obrigado.

Problema no iOS

Meu chefe tem o iphone 14, no celular dele a mask não funciona, não permite o click no imput, ja testei em outros iphones e em celulares andriod funcionam perfeitamente, saberia me dizer oq posso fazer para resolver esse problema?

Utilizar inglês como linguagem padrão

É comum que times acabem optando por utilizar inglês como linguagem padrão de desenvolvimento. Seria interessante padronizar para inglês os nomes de classes, variáveis e arquivos utilizadas no projeto também.

Exemplos:

  • HoraInputFormatter
  • formatter/cartao_bancario_input_formatter.dart

incluir exemplos

criar a pasta /example, contendo demonstração de todos os campos

Erro no pubspec

Estou recebendo esse erro no pubspec.yaml

Flutter (Channel beta, 1.26.0-17.8.pre, on Linux, locale pt_BR.UTF-8)
• Flutter version 1.26.0-17.8.pre at /development/flutter
• Framework revision 044f2cf560 (2 days ago), 2021-02-24 13:02:05 -0800
• Engine revision 042c82b02c
• Dart version 2.12.0 (build 2.12.0-259.16.beta)

Because brasil_fields >=0.4.0 <1.0.0-nullsafety.0 depends on intl ^0.16.1 and rise_delivery depends on intl ^0.17.0, brasil_fields >=0.4.0 <1.0.0-nullsafety.0 is forbidden.
So, because rise_delivery depends on brasil_fields ^0.6.1, version solving failed.
pub get failed (1; So, because rise_delivery depends on brasil_fields ^0.6.1, version solving failed.)

Erro na formatação de data

Olá, estou tendo um erro no DataInputFormatter(). Quando começo a digitar, a partir do 3º caractere, o formatter começa a inserir barras a mais. Depois disso até o ato de tentar apagar as barras, faz ele inserir outras e o input fica todo desformatado.
O erro também ocorre com o formatador de cpf e cep, mas não acontece se for adicionado um formatter de digits only.

inputFormatters: [ FilteringTextInputFormatter.digitsOnly, CpfInputFormatter(), ],

Deste modo com o cpf, funciona corretamente, mas se eu adiciono o digitsonly no campo de date, ele não formata nada.

Outros pacotes de formatação de data funcionam, mas eu não queriar ter que usar um outro pacote só pra formatar a data. Existe alguma maneira de contornar esse problema?

Estou utilizando o Channel stable, 1.22.2


Screenshot_1603719233

Mascara simultanea

É possível utilizar mascaras simultaneas? Por ex:

Informe o seu CPF ou CNPJ... e o plugin mascarar se for uma opção ou outra?

Como fazer?

bug na mascara de cpf e cnpj

Olá estou tentando usar o package, porem quando ele começa a mostrar a mascara não deixa eu digitar todo o dado conforme a imagem e quando termina ele congela o campo e não deixa apagar.

Untitled

`flutter doctor
[√] Flutter (Channel stable, 2.2.3, on Microsoft Windows [versão 10.0.21354.1], locale pt-BR)
[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[√] Chrome - develop for the web
[√] Android Studio
[√] VS Code (version 1.58.2)
[√] Connected device (4 available)

• No issues found!`

Incluir no formatter % percentual

Parabéns pelo pacote, muito bom mesmo! seria interessante no formatter assim como tem a mask 'R$' ter também a mask % ou até mesmo poder definir alguma outra qualquer, e que fosse possível determinar a posição da mask (na frente/inicio do texto ou no final). Ficaria mais flexível abrindo uma série de possibilidades (Ex. metro quadrado, metro cúbico, temperatura como já foi mencionado aqui, percentual, outras moedas, etc...)

Formatação double para Real ou Centavos

Em casos de cálculo a partir de um valor inserido pelo TextFormField, é necessário realizar a conversão de Real ou Centavos para double, a fim de realizar o cálculo.

Porém após o cálculo, se quisermos exibir o valor em um novo TextFormField, a única opção oferecida pelo Dart é colocar "valor.toStringAsFixed(2)", por exemplo, pois não existe a formatação para Real ou Centavos novamente, fazendo com que o campo de exibição fique diferente do campo de inserção.

Exemplo sem formatação:
image

Exemplo a ser obtido (usei a função "NumberFormat.currency" do package intl):
image

Poderia incluir máscaras de medidas?

Poderia ser incluído no pacote, mascáras de medidas tipo centímetros, metros, milímetros e quilomêtros?
Ex: 120,00 mm, 80,00 mm, 12,00 m, 80 km, 10,00 cm.
(Acredito que não precisa das unidade "mm/km/cm" na máscara apenas o auto ajuste das vírgulas)

Exemplo das classes PADRÕES não está funcionando...

Na seção README consta um código exemplo que demonstra como chamar as diferentes classes padrões oferecidas pelo pacote.

Porém, ao tentar usar o código exemplo mencionado em README (código segue abaixo), percebi que em meu projeto o botão Drop Down é mostrado de forma estranha, conforme print de tela que informo abaixo:

DropdownButton(
items: Regioes.listaRegioes.map((String opcao) {
return DropdownMenuItem(
value: opcao,
child: Text(opcao),
);
}).toList(),

21

Perceba que aparece um minúsculo "." na interface do app sinalizando que ali era para ser mostrado o Drop Down, porém a lista não é mostrada!

O QUE FALTA SER INCLUÍDO NO CÓDIGO EXEMPLO para que apareça a lista na interface?

Formatter de celular

Percebi que não formata o número do celular (9 a mais no início).

Também poderiam incluir validadores!

Capturar valores sem a mascara

Rubens, muito bom o seu package!
Apenas senti falta de um método para recuperar os valores sem a mascara. Meu backend salva tudo "cru"..

Ajuste em ObterTelefone

Fiz um pull request alterando o metodo ObterTelefone onde identifica se é telefone fixo (99) 9999-9999 e celular (99) 99999-9999
antes só funcionava para celular.

Incompativel com flutter_localizations

está dando esse erro aqui ao tentar instalar:

Because no versions of brasil_fields match >0.6.0 <0.7.0 and brasil_fields 0.6.0 depends on intl ^0.16.1, brasil_fields ^0.6.0 requires intl ^0.16.1.
And because every version of flutter_localizations from sdk depends on intl 0.17.0-nullsafety.2, brasil_fields ^0.6.0 is incompatible with flutter_localizations from sdk.
So, because maisagil depends on both flutter_localizations any from sdk and brasil_fields ^0.6.0, version solving failed


dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
brasil_fields: ^0.6.0
searchable_dropdown: ^1.1.3
http: ^0.12.2
path: ^1.7.0
path_provider: ^1.1.0
sqflite: ^1.1.5
ffi: ^0.1.3
sqflite_common_ffi: ^1.1.1
idb_sqflite: ^0.3.2+1
font_awesome_flutter: ^8.4.0
cupertino_icons: ^1.0.0
shared_preferences: ^0.5.12+4
url_launcher: ^5.7.10
base32: ^1.1.2

Formatação CPF com problema

Ao digitar o CPF a partir do terceito dígito a mascara coloca pontos enquanto diga repetidamente e não consigo apagar oque foi digitado.

image

Obs: Utilizei outra mascara e funciona normal, mas queria manter só essa pois o da placa funciona perfeitamente.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.