flutterbootcamp / brasil_fields Goto Github PK
View Code? Open in Web Editor NEWO jeito mais fácil de utilizar padrões e formatos brasileiros em seu projeto
Home Page: https://flutterbootcamp.github.io/brasil_fields/#/
License: Other
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
É possível validar o cpf ao perder o foco ou de alguma outra forma?
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.
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
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?
Alguém poderia fazer a mascara de celular?
No formatador de centavos, utilizado da forma mostrada abaixo, obtive o seguinte problema:
TextFormField(
focusNode: _quantityFN,
autocorrect: false,
decoration: InputDecoration(labelText: 'Quantidade'),
keyboardType: TextInputType.number,
controller: _quantity,
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
CentavosInputFormatter(),
],
onChanged: (value) {
print(value);
}
),
criar teste unitários
melhorar a documentação, baseado em https://www.dartlang.org/guides/language/effective-dart/documentation
Adicionar parametro opcional em obterDateTime para tb retornar a hora
Suporte para 4 casas decimais
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.
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!
Olá, muito bom o package, poupou muito tempo aqui, parabéns.
Uma dica que dou é adicionar outro formatar para placas de veículos: AAA-9999; AAA-9A99.
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(),
],
),
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
O cursor está saindo do ponto X e voltando para o início, no ponto 0.
TextFormField( inputFormatters: [ WhitelistingTextInputFormatter.digitsOnly, CpfInputFormatter(), ], );
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)
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 !
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:
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.
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?
É 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
Recomendar a utilizacao do package brasil_datetime.
criar a pasta /example, contendo demonstração de todos os campos
Essas mask são muito utilizadas, seria legal serem implementadas.
incluir exemplo de modelos (dropdown button)
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.)
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
É 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?
CEP não se costuma usar ponto poderiam ter um cep sem ponto que ficaria perfeito.
Mestre, como faço pra iniciar o widget já preenchido e formatado?
Desde já agradeço a atenção recebida.
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.
`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!`
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...)
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 a ser obtido (usei a função "NumberFormat.currency" do package intl):
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)
Tem alguma forma de personalizar? Para colocar a mascara de horario?
Olá, como faço para ir digitando no campo e trocar a mascara de Cpf para Cnpj? É possível? Da uma ideia ai.
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(),
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?
Percebi que não formata o número do celular (9 a mais no início).
Também poderiam incluir validadores!
Seria interresante o formatter de Temperatura. Acho que ajudaria bastante no desenvolvimento.
É possivel utilizar outros formatos de data ?
apenas dia e mes ou apenas mes e ano ?
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"..
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.
criar page para o plugin
referencia: bloc_package
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
Corrigir formatter para validar a data informada.
bug adicionado no commit: 57aad97
Seria interessante não deixar inserir um CPF inválido
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.