Ir para conteúdo

Reputação

6

Sobre vinicius-ps

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Habilitar
  1. 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.
  2. 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.
  3. A página principal ficou bem simples mas ficou bom. As vezes ao clicar entre um personagem e outro trava só.
  4. Ficou bem completo. A funcionalidade de exibir todas as histórias/heróis e o esquema de favoritar ficou muito bom.
  5. No caso, a imagem e nome fixo e o scroll no texto né? Ai teria o problema (que não é um problema gigante) de não ficar certo em tela muito pequena. Eu uso um emulador pequeno aqui. Realmente seria melhor a imagem clicável, só o nome não é intuitivo mesmo.
  6. Version 1.0.0

    5 downloads

    Na descrição do desafio falava em primeiras cinco histórias, como cronologicamente seria complicado porque tem diversas comics,series e etc, eu fiz pegando 5 comics aleatórias, entre as que vem na requisição.

    Free

×
×
  • Criar Novo...