Ir para conteúdo

Bem vindo ao Fluttership

Fluttership

Todas Atividades

This stream auto-updates     

  1. Hoje
  2. Última semana
  3. Login, Jwt, auth, crud basico
  4. Fala galera! Primeiramente, agradeço pelo apoio de todos! Eu mencionei sobre uma API Rest para vocês consumirem gratuitamente em seus Apps Flutter, e está próximo de ser implantado!! 😍 A primeira que vou disponibilizar é um TO DO, e vou trazer um App consumindo esta API como exemplo. Minha pergunta é a seguinte: Quais funcionabilidade vocês gostariam de consumir? Exemplo: Login, Estoque. OBS: Quaisquer um, exceto Login, terá o CRUD ( Create, Read, Update e Delete ) Hey Devs!! What's up? First of all, i am very very happy 2be a part of this community and sorry for my english, LOL! I mention about build an API REST for u All in somes flutters groups and IT'S COMMING !!! My Question is: What kind of Rest API you'll want to consume? Even though, Our community Fluttership's a portuguese forum, you can post here or in our forum, this question. https://fluttership.com.br/index.php?/topic/48-fluttership-api-rest/ ( Maybe i'll not reply everybody, cuz i've been very busy with work and projects, BUT, i'll do my best 4u all.)
  5. Earlier
  6. Você pode usar este https://flutterstudio.app/ para ajudar.
  7. Cê é louco, muito bom @Hamilton Tenório da Silva ! 🤘🏻🤘🏻🤘🏻🤘🏻
  8. Parabens!!! Esta armazenando via firebase?
  9. Depende da complexidade do projeto é possível rodar em todas as plataformas com 1 code base apenas, vai precisar trabalhar muitas vezes apenas com o tamanho de telas diferenciadas
  10. Mantenha pronto textos fixos ou variáveis para envio rápido por mensageiros. Você envia textos similares através do programas mensageiros (Viber, WhatsApp, Telegram, Skype, SMS, etc.), de forma frequente? Então este é o aplicativo certo para você! Com este aplicativo você prepara seus textos, sempre que precisar enviar um deles, basta escolher e enviar para uma pessoa ou um grupo de um destes programas mensageiros. Se o texto for fixo, é só enviar. Se o texto gravado permitir a complementação de informações variáveis (substituições), na hora do envio você poderá digitar estes complementos variáveis. É muito simples indicar um campo para ter um conteúdo variável: basta digitar ** onde você deseja esta opção. No momento do envio, para cada ** que aparecer no texto será aberto um campo para você informar o novo texto para aquele ponto. Ideal para empresas que prestam serviços de SAC com o uso de mensagens instantâneas, profissionais liberais, personal trainer e qualquer outra atividade que tem estes programas de envio de mensagens como ferramenta de comunicação rápida. Você pode criar novas mensagens a qualquer momento. A versão free permite até 5 frases distintas, sem custo. Para mais frases, há a opção de aquisição de um pacote de textos frases ilimitados, por tempo indeterminado. Alguns exemplos de uso: - SAC de empresa, com as frases mais comuns que são usadas nas respostas. - Treinador, para se comunicar com os alunos passando orientação ou eventos. - Autônomo, para passar seus dados de contato (telefone, email, endereço, etc.). - Professor, para enviar a alunos informações e exercícios. - Coordenador de evento, para orientar os convidados sobre local/data do evento. - Pessoa física, para dar bom dia para seus amigos. - Envio de mensagem sobre horário de trabalho em feriados, pontes, dias especiais. - Envio de mensagem com dados bancários para recebimento de pagamentos. - Envio de endereço para cliente retirar material. - Clinicas médicas que confirmam o agendamento com antecedência - Muitas outros usos! A escolha do mensageiro padrão é feito diretamente no momento do compartilhamento do texto. Qualquer outro aplicativo que estiver instalado em seu aparelho pode ser o destino de sua mensagem. Também é possível enviar um texto diretamente a um usuário do WhatsApp sem que seja necessário inserir este usuário no seu Catálogo de Contatos. Basta digitar o número do celular e tocar no ícone de envio direto através do WhatsApp. Será aberto um chat com a sua mensagem inicial, onde você poderá continuar a conversa. Tudo isso sem que o contato esteja em seu catálogo de contatos. Importante: você precisa ter o programa mensageiro desejado instalado em seu dispositivo. Este aplicativo não substituiu o programa mensageiro oficial. Os nomes dos mensageiros citados acima são de propriedade de terceiros e não temos qualquer vinculação com estas empresas. Mais detalhes em https://pratic.com.br/textozap/ Android: https://play.google.com/store/apps/details?id=com.hamiltonhtsnet.com.br.fraseprontawhatsapp iOS: https://itunes.apple.com/us/app/textozap-2/id1448608044?l=pt&ls=1&mt=8
  11. Seu pet se comporta ou fica latindo quando você está fora de casa? Registre! Você sai de casa e deixa o seu pet sozinho? Como você sabe se ele se comporta bem ou se ele fica latindo, incomodando os vizinhos? Este app foi criado para você! Com ele você mantém um celular ligado (em cima da mesa, por exemplo) e o app registra o ruído do ambiente. Quando você voltar, você saberá quantas vezes o limite de ruído que você definiu foi ultrapassado e o tempo total de "barulho" que o seu pet provocou. Claro que fatores externos influenciam. Motos passando na rua, avião no céu, pessoas conversando alto no corredor do andar e qualquer outro ruído externo também são registrados. Avalie os dados com moderação. Você pode definir o limite mínimo e máximo de apresentação do ruído (em dB) ambiente no gráfico e também o limite acima do qual deve ser considerado como um evento de ruído indesejado. Se um determinando evento passou de uma quantidade de segundos que você também pode definir, o app emite um som de silêncio (shhh). Há opção para login (Google, Facebook e email) para que os parâmetros fiquem guardados e seja possível usar um outro app de monitoramento remoto (ainda em desenvolvimento). Há também a possibilidade de uso na forma anônima, sem que os parâmetros configurados sejam guardados para um outro momento. Mais detalhes em https://pratic.com.br/escuta-pet/ Android: https://play.google.com/store/apps/details?id=br.com.htsnet.monitora_cao
  12. Ajuda os bebês a identificarem formas simples e cores. Os bebês adoram identificar formas e cores. Este aplicativo irá auxiliar nesta divertida brincadeira. Inspirado na caixa de formas, este app mostra imagens simples e suas respectivas posições de encaixe. As imagens são mostradas de forma aleatória, evitando o cansaço. As cores são vibrantes para manter a atenção. Bebês pequenos (por volta dos 18 meses) já tem esta percepção e podem iniciar nas tentativas de arrastar e soltar. No início é preciso da ajuda de uma pessoa maior (amiguinho ou responsável), mas em pouco tempo eles já saberão arrastar a forma para o local correto. Há sons de sucesso e falha, ajudando no reconhecimento da brincadeira. Veja mais detalhes em https://pratic.com.br/baby-form/ Android: https://play.google.com/store/apps/details?id=br.com.htsnet.babyform
  13. Faça uma foto e tenha a lista de presença de sua sala de aula Fazer a chamada de nomes na sala de aula é uma atividade que demanda tempo precioso de uma aula. Foi pensando em diminuir este tempo é que foi criado o "Foto Chamada". Com este app você apenas tira uma foto dos alunos (pedindo para que todos olhem para a frente) e pronto: o app registra a foto e reconhece todos os rostos dos alunos previamente cadastrados. Assim, em poucos segundos você tem a lista completa dos alunos na classe. Mais detalhes em https://pratic.com.br/foto-chamada/ Android: https://play.google.com/store/apps/details?id=br.com.htsnet.fotochamada iOS: https://apps.apple.com/us/app/foto-chamada/id1475673398?l=pt&ls=1
  14. Versões PAI e FILHO Pais e Filhos - Pai: um acordo de segurança entre pais e filhos Trabalhando juntos (App Pai e Filho), eles são uma forma dinâmica de manter os responsáveis tranquilizados enquanto os filhos lhe posicionam em intervalos pré-definidos de sua situação. A ligação entre os 2 aplicativos é feita de forma consensual e transparente. Um dos lados deve enviar seu código de identificação para o outro, de forma a formar um vínculo entre eles. É possível ter mais de um pai (app Filho) ou mais de um filho (app Pai) na mesma conta, ou seja, não há limitação de pessoas sendo tuteladas. Quando o filho responde uma das opções previamente registradas, a localização geográfica e a carga da bateria são registrados, permitindo que o pai saiba onde o filho está e como está a situação da bateria. O PAI pode enviar um comando para ativar o alarme (sonoro) do aparelho do FILHO. Assim, mesmo que o aparelho do filho esteja no mudo, o alarme tocará para que este saiba que o pai deseja contato. Android - Pai: https://play.google.com/store/apps/details?id=br.com.htsnet.paisefilhospai Android - Filho: https://play.google.com/store/apps/details?id=br.com.htsnet.paisefilhosfilho iOS - Pai: https://apps.apple.com/us/app/pais-e-filhos-pai/id1319242514?l=pt&ls=1 iOS - Filho: https://apps.apple.com/us/app/pais-e-filhos-filho/id1319227277?l=pt&ls=1
  15. Um aplicativo para você registrar coordenadas geográficas por onde você passou. Sabe quando você passa num local interessante e depois você não lembra bem onde era? Ou quando deixa o carro estacionado em algum lugar e depois não sabe como voltar ao local? Ou visitou um cliente que lhe levou a outro local e depois você não tem ideia de onde era? Então, este aplicativo tem como objetivo permitir que você marque rapidamente as coordenadas geográficas de onde você está em determinado momento, com algum texto rápido que você escreve na hora, de forma muito rápida. Depois, quando quiser, basta procurar no histórico e, ao localizar o dia, horário e anotação desejada, tocar no ícone de localização geográfica para ver no mapa a localização do local registrado anteriormente. Ideal para turistas registrarem onde fica o hotel, o parque, o estacionamento, o restaurante e todos os locais por onde passou e que possa querer retornar depois. Também é ótimo para mochileiros, ciclistas e similares, que querem registrar por onde passaram e ter sua localização marcada. Android: https://play.google.com/store/apps/details?id=com.hamiltonhtsnet.com.br.meurastro iOS: https://itunes.apple.com/us/app/meu-rastro/id1029551043?l=pt&ls=1&mt=8 Mais detalhes: https://pratic.com.br/meu-rastro/
  16. Que isso jovem, matéria boa assim !!! parabens @vinicius-ps
  17. Hive é um banco de dados do tipo chave-valor, leve e extremamente rápido feito em Dart puro. Essa é a descrição que você encontra no pub.dev e documentação do projeto. Como o hive trabalha O hive utiliza o conceito de caixas para armazenar os dados. Uma caixa pode ser comparada com uma tabela do SQL, mas as caixas não tem uma estrutura fixa e podem conter qualquer coisa. Vantagens O hive se apresenta como uma opção extremamente vantajosa em relação as outras opções de persistência de dados no Flutter, o conhecido shared_preferences e o SQLite por dois motivos: O primeiro, atualmente o shared_preferences não funciona na plataforma web pois encapsula os nativos NSUserDefaults no iOS e SharedPreferences no Android. E o segundo, o desempenho do hive é muito superior ao SQLite tanto em leitura quanto escrita. Em relação ao shared_preferences, os dois são equiparáveis em leitura, porém o hive ganha na escrita. A diferença na escrita é bem grande, mas você não precisa acreditar nos resultados apresentados na documentação, você mesmo pode executar o benchmark. Como executar o benchmark Pra manter artigo mais resumido aqui vou deixar o link do artigo original de como executar o benchmark. Eu consegui esses resultados: A diferença entre o hive e SQLite parece ser menor nos meus resultados, porém devemos lembrar que o tempo no aparelho usado é muito maior, chegando a 53832ms, enquando no benchmark da documentação o tempo máximo é 14760ms. Como utilizar Agora que já ficou comprovado o desempenho do hive vamos conferir como utilizá-lo. Crie um projeto Primeiro crie um projeto padrão do flutter. Adicionando hive no projeto Em pubspec.yaml adicione: dependencies: hive: ^1.0.0 path_provider: ^1.2.0dev_dependencies: hive_generator: ^0.5.1 build_runner: ^1.7.1 Nós precisamos além do hive, incluir o path_provider para podermos pegar o diretório atual do aplicativo. Agora apague todo o conteúdo do arquivo main.dart e inclua uma estrutura básica de um StatelessWidget: import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; import 'package:path_provider/path_provider.dart';void main() => runApp(MaterialApp(home: MyApp()));class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Exemplo hive', home: Container() ); } } Agora vamos criar uma função para pegar os dados de uma caixa: Future _abrirCaixa() async { var dir = await getApplicationDocumentsDirectory(); Hive.init(dir.path); return await Hive.openBox('minhaCaixa'); } Como essa operação envolve a leitura de um arquivo você precisa utilizar o modificador async e usar o await. Se você estiver utilizando o flutter web você não precisa do path_provider no projeto e também não precisa utilizar o Hive.init(). Nós vamos utilizar um FutureBuilder pra criar a estrutura do nosso projeto. No future será utilizado a função _abrirCaixa, se algo der errado nós vamos exibir um Center com essa mensagem, se estiver tudo ok retornaremos nossa página principal. Altere a classe MyApp: class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Exemplo hive', home: FutureBuilder( future: _abrirCaixa(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { if (snapshot.error != null) { return Scaffold( body: Center( child: Text('Algo deu errado :('), ), ); } else { return MinhaPagina(); } } else { return CircularProgressIndicator(); } }, ), ); } } Agora nós vamos criar o widget MinhaPagina: class MinhaPagina extends StatefulWidget { @override _MinhaPaginaState createState() => _MinhaPaginaState(); }class _MinhaPaginaState extends State<MinhaPagina> { Box _caixa; @override void initState() { _caixa = Hive.box('minhaCaixa'); super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Exemplo hive'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('Reinicie o aplicativo para testar'), SizedBox(height: 8), Text('You have pushed the button this many times:'), WatchBoxBuilder( box: _caixa, builder: (context, box) { return Text( box.get('contador', defaultValue: 0).toString(), style: Theme.of(context).textTheme.display1, ); }, ),], ), ), floatingActionButton: FloatingActionButton( onPressed: () { _caixa.put( 'contador', _caixa.get('contador', defaultValue: 0) + 1); }, tooltip: 'Aumentar', child: Icon(Icons.add), ),); }} Para exibir o valor do contador nós vamos utilizar um widget criado pelo desenvolvedor do hive. O WatchBoxBuilder se recria toda vez que o valor de uma caixa ou de uma chave específica muda. Para usar vamos inserir no pubspec.yaml: dependencies: hive: ^1.0.0 path_provider: ^1.2.0 hive_flutter: anydev_dependencies: hive_generator: ^0.5.1 build_runner: ^1.7.1 Depois adicione o import em main.dart: import 'package:hive_flutter/hive_flutter.dart'; Sempre que o aplicativo é iniciado ele lê o valor de contador e exibe na tela. Sempre que o botão é pressionado o valor também é atualizado na caixa, o que faz com que o WatchBoxBuilder seja atualizado. Esse é um exemplo bem simples porém já consegue mostrar um pouco de como utilizar o hive. Ele aparenta ser uma ótima opção de persistência no flutter, com um desempenho excelente e sem dependências nativas. Esse projeto foi baseado na documentação do hive e pode ser encontrado no Github.
  18. void main() { DateTime hoje = DateTime.parse('2019-09-30'); DateTime ontem = DateTime.parse('2019-09-29'); if(hoje.difference(ontem).inDays > 0) { print('$hoje é maior que $ontem'); } } Este é um modo para comparar se uma data é maior que outra... Entre outras: 1. add() This adds the provided duration and returns a new DateTime instance: var berlinWallAdd10 = berlinWallFell.add(Duration(days: 10, hours: 5))); // 19th of November at 05:00 hrs print(berlinWallAdd10.day); // => 19 print(berlinWallAdd10.hour); // => 5 2. difference() This accepts another DateTime object, returning the difference as a Duration object. You can then extract the days, hours, minutes and so on. var diff = berlinWallFell.difference(moonLanding); diff.inDays; // => 7416 - log these out with print(diff.inDays); diff.inHours; // => 177987 diff.inMinutes; // => 10679261 3. isAfter(DateTime other) This checks that the given date is after other: moonLanding.isAfter(berlinWallFell); // => false 4. isBefore(DateTime other) This checks that the given date is before other: moonLanding.isBefore(berlinWallFell); // => true 5. compareTo(DateTime other) Checks to see that the date values are equal. Returns 0 if they are. berlinWallFell.compareTo(berlinWallFell); // => 0 (equal) moonLanding.compareTo(berlinWallFell); // => -1 (not equal) 6. subtract(Duration duration) Subtracts the given duration from the date. berlinWallFell.subtract( Duration(days: 7416, hours: 3, minutes: 41, seconds: 56)); // => 1969-07-20 20:18:04.000Z (about the day and time of the moon landing) 7. toLocal() Returns the date in the local time zone. Useful for i18n. moonLanding.toLocal(); // => 1969-07-20 21:18:04.000 8. toUtc() Returns the date in UTC time. moonLanding.toUtc(); // => 1969-07-20 20:18:04.000Z moonLanding.timeZoneName; // => UTC
  19. Fala Devs, beleza? sabia que agora você pode vender uma template??? Isso ae!! Com o sucesso que tivemos do Desafio Marvel valendo uma camisa da comunidade, decidimos que você pode criar uma template ou um app modelo e vender o source. é super simples!!! OBS: Para proteger você e seus clientes, deixamos umas dicas e termos para você fazer a venda, ou comprar de modo seguro. https://fluttership.com.br/index.php?/guidelines/ Passo a passo como vender templates 1° - Click na aba downloads 2° - Envie um arquivo (submit a file) 3° Faça upload do source 4° aguarde o upload 5° Adicione screenshots válidas 6° - Digite o nome do template e sua descrição 7° - Digite o valor e sua renovação. OBS: você pode optar por "no renewals", uma vez pago, pode baixar novas versões de melhorias ou como na foto abaixo, você ta,mbém pode dar um prazo de dias e valor.
  20. Instalando Flutter O Flutter tem como requisito algumas ferramentas para sua instalação, usando a versão minima do Ubuntu você precisará instalar essas ferramentas: curl git Para instalar ambos, digite: apt install NOME_FERRAMENTA Adicione o sudo antes para ter permissão. Se for a primeira vez que você utilizar o sudo nessa sessão, digite a senha do seu usuário: sudo apt install curl Após digitar apt install no terminal você precisa confirmar a instalação. Esse passo pode ser pulado se você adicionar o parâmetro -y no comando: sudo apt install curl -y sudo apt install git -y Depois disso copie os arquivos para a pasta que você for deixar o Flutter/Android Studio e descompacte os arquivos: tar xf flutter_linux_v1.9.1+hotfix.2-stable.tar.xz tar xf android-studio-ide-191.5791312-linux.tar.gz Agora para acessar os comandos do flutter no terminal você precisa adicionar a pasta flutter/bin no seu PATH. Para fazer isso vá até seu diretório HOME: cd $HOME Agora você vai editar o arquivo .bashrc, para isso iremos utilizar o nano. sudo nano .bashrc Vá até o final do arquivo e adicione a linha: PATH=/home/SEU_USUARIO/SUA_PASTA/flutter/bin:$PATH No meu caso fica: PATH=/home/vinicius/development/flutter/bin:$PATH Arquivo .bashrc Depois aperte CTRL + X para sair, e digite Y para salvar o arquivo e depois ENTER para manter o mesmo nome. Mesmo depois de adicionar o caminho do Flutter você ainda não conseguirá utilizar os comandos. Para as alteração entrarem em efeito, ainda no diretório home digite : source .bashsrc Depois disso sim você conseguiu! Agora use o flutter doctor para verificar o que falta. flutter doctor Ainda falta o Android toolchain, algum device e o Android Studio. Instalando Android Studio Antes de instalar o Android Studio, instale o JAVA: sudo apt install openjdk-8-jre-headless -y Com java -version você consegue confirmar a instalação. Agora volte para a pasta do Android Studio, entr em bin e execute o arquivo studio.sh. ./studio.sh Depois disso é só ir clicando em Next, escolher seu tema preferido e esperar alguns downloads. Android Studio Depois de instalado abra o Android Studio vá em File > Settings > Plugins e instale o Flutter, que vai instalar o plugin do Dart também. Se ao abrir o Android Studio aparecer esse erro: missing module libcanberra-gtk-module Simplesmente instale o módulo em questão: sudo apt-get install libcanberra-gtk-module Agora para acessar o Android Studio você precisa ir até a pasta bin e executar o arquivo studio.sh. Para criar um atalho entre em: cd /usr/share/applications Depois digite: sudo nano studio.desktop E insira: [Desktop Entry] Name=Android Studio Comment=Android Studio Exec=/home/SEU USUARIO/SUA PASTA/android-studio/bin/studio.sh Icon=/home/SEU USUARIO/SUA PASTA/android-studio/bin/studio.png Terminal=false Type=Application Categories=Development No meu caso: [Desktop Entry] Name=Android Studio Comment=Android Studio Exec=/home/vinicius/development/android-studio/bin/studio.sh Icon=/home/vinicius/development/android-studio/bin/studio.png Terminal=false Type=Application Categories=Development Ou simplesmente, no Android Studio, vá em Tools > Create desktop entry para o mesmo resultado de forma mais fácil. Depois disso tudo execute o flutter doctor novamente. Agora só falta aceitar as licenças e executar um emulador. Para aceitar as licenças digite: flutter doctor — android-licenses E aceite todas, digitando y. Emulador AVD Manager Para executar o emulador abra o Android Studio vá em AVD Manager > Create Virtual Device, selecione um modelo clique em Next e faça o download do Android. Porém se você olhar pro lado perceberá um problema. Para resolver esse problema primeiro instale o qemu-kvm: sudo apt install qemu-kvm Agora adicione o seu usuário no grupo kvm: sudo adduser SEU_USUARIO kvm sudo adduser vinicius kvm Depois mude o owner com o comando: sudo chown SEU_USUARIO /dev/kvm sudo chown vinicius /dev/kvm Se mesmo assim você ainda estiver tendo problemas com permissão pode tentar alterar: sudo chmod 777 -R /dev/kvm Depois disso você consegue executar o emulador… ou quase. No meu caso toda vez quando iniciava o emulador o Ubuntu travava, parava de responder e eu tinha que reiniciar. O que eu descobri foi que o Ubuntu instalou um driver genérico da minha placa de vídeo. Para resolver: sudo ubuntu-drivers autoinstall Com esse comando o driver vai ser reinstalado. Depois de reiniciar você pode confirmar com o comando nvidia-smi se está tudo certo. Depois disso tudo funcionou… ou quase novamente. O emulador funcionava ok, mas ficava um chiado constante. A solução geralmente recomendada é diminuir o volume do emulador, o que pra mim não funcionou. Pra resolver, abra o arquivo: /etc/pulse/default.pa E altere a linha: load-module module-udev-detect para: load-module module-udev-detect tsched=0 Depois altere o arquivo: /etc/pulse/daemon.conf E altere a linha: ; default-sample-rate = 44100 para: default-sample-rate = 48000 Depois disso reinicie o computador. Agora finalmente está tudo ok, só falta poder abrir o emulador pelo terminal. Para isso vamos editar novamente o arquivo .bashrc e no final adicione a linha : alias emulator=’/home/vinicius/Android/Sdk/emulator/emulator’ Um alias funciona como um apelido, então você pode utilizar a palavra que você quiser depois de alias: alias teste=’/home/vinicius/Android/Sdk/emulator/emulator’ Isso irá funcionar normalmente. No meu caso vou utilizar emulator mesmo. Note que o Android SDK não fica na mesma pasta do Android Studio. No meu caso fica em /home/vinicius/Android/Sdk. Salve e execute o source .bashrc novamente. Para testar se funcionou digite emulator: Para listar os emuladores digite: emulator -list-avds Para executar um emulador digite : emulator -avd NOME_EMULADOR No meu caso: emulator -avd Pixel_2_API_29 Finalmente depois de todo esse trabalho você consegue criar e executar seu projeto em Flutter. O Ubuntu apresentou desempenho superior ao Windows 10, tanto no Visual Studio Code quanto nos emuladores então por isso escolhi utilizá-lo mesmo tendo alguns problemas na primeira instalação. Artigo original: https://medium.com/@viniciusps/como-instalar-flutter-e-android-studio-no-ubuntu-18-04-lts-1338d7bd2d6b Se alguém tiver alguma dúvida, talvez eu possa ajudar.
  21. Parabéns pelo projeto, ficou muito bom. Só ali no gif do exemplo do projeto, o placeholder está como CPF. No mais tá show de bola
  22. Valeu foi bem proveitoso trabalhar nesse projeto, consegui entender alguns conceitos para salvamento local bem interessantes.
  23. Obrigado pelo feedback galera. Estou verificando os outros projetos, estão 10!!
  1. Load more activity
×
×
  • Criar Novo...