Unidade 2 - Construir o controle do BD (parte 1)

00:31:56
https://www.youtube.com/watch?v=aYP8z-9w2QE

Summary

TLDRO vídeo ensina como implementar um sistema CRUD usando SQLite no Flutter, detalhando a criação de diretórios, a configuração do banco de dados e a implementação de classes para manipular os dados. O apresentador aborda conceitos essenciais como persistência de dados, métodos assíncronos e a importância da operação `getDatabase()`. Demonstra como criar uma tabela para armazenar informações sobre planetas e explica a estrutura SQL necessária para isso. A sessão termina deixando em aberto a manipulação de dados (gravar, alterar e deletar informações).

Takeaways

  • 📚 Entender o conceito de CRUD (Create, Read, Update, Delete).
  • 🗄️ Aprender a usar SQLite como banco de dados em Flutter.
  • 🔄 Compreender a importância de operações assíncronas utilizando `await`.
  • ⚙️ Fazer a persistência de dados em um banco de dados.
  • 🗂️ Saber como criar e estruturar uma tabela em SQL.
  • 🔄 Utilizar o método `getDatabase()` para abrir o banco de dados.
  • 🔑 Identificar a função de uma chave primária em tabelas.
  • 📝 Escrever a instrução SQL `CREATE TABLE` para definir estruturas de dados.
  • ⚙️ Compreender o funcionamento de operações com banco de dados no Flutter.
  • 💡 Aprender sobre estratégias de armazenamento de dados localmente.

Timeline

  • 00:00:00 - 00:05:00

    Neste primeiro segmento, o apresentador inicia a configuração do controle para um sistema que gerencia dados sobre planetas, mencionando a criação de um novo diretório e arquivo, assim como a implementação inicial de um CRUD (Create, Read, Update, Delete) usando o SQLite como banco de dados.

  • 00:05:00 - 00:10:00

    No segundo segmento, o apresentador apresenta e explica a classe que irá implementar o CRUD para a tabela de planetas no banco de dados. Ele cita a importância de funções como abrir, salvar, buscar, atualizar e deletar registros dentro do CRUD, e menciona que se dividirá o projeto em etapas para facilitar a compreensão.

  • 00:10:00 - 00:15:00

    No terceiro segmento, o apresentador fala sobre a importância do uso de pacotes prontos ao trabalhar com Flutter, mostrando como instalar o pacote 'sqflite', que gerencia o SQLite. Ele explica que a escolha de utilizar exemplos prontos facilita o desenvolvimento e esclarece que o conhecimento de como criar e invocar funções é vital para o progresso.

  • 00:15:00 - 00:20:00

    No quarto segmento, ele demonstra a instalação do pacote, removendo linhas desnecessárias do arquivo 'pubspec.yaml' para mantê-lo mais limpo e focado. Explica que a inclusão de pacotes e a configuração adequada são fundamentais para o funcionamento do Flutter, com um foco especial na biblioteca SQL.

  • 00:20:00 - 00:25:00

    No quinto segmento, o apresentador começa a implementação da função que vai conectar ao banco de dados, sugerindo que o nome da tabela e a estrutura sejam compatíveis com objetos que desenvolveu anteriormente. O foco continua no processo de inicialização e no cuidado com a manipulação assíncrona

  • 00:25:00 - 00:31:56

    No último segmento, o apresentador discute a criação e persistência do banco de dados, detalhando a implementação de comandos para criar e gerenciar a tabela de planetas. Ele reforça a ideia de persistência, destacando a necessidade de formatos adequados para relações entre variáveis e a importância de funções assíncronas para garantir a integridade dos dados.

Show more

Mind Map

Video Q&A

  • O que é CRUD?

    CRUD significa Create (Criar), Read (Ler), Update (Atualizar) e Delete (Deletar), que são as operações básicas que se pode realizar em um banco de dados.

  • Por que usar SQLite no Flutter?

    SQLite é um sistema de gerenciamento de banco de dados muito leve e adequado para aplicações móveis, permitindo armazenamento de dados local de forma eficiente.

  • Como criar um banco de dados no Flutter?

    Um banco de dados pode ser criado no Flutter utilizando o pacote sqflite e a função openDatabase(), que cria o banco se não existir.

  • O que é o método `getDatabase()`?

    O método `getDatabase()` é utilizado para abrir e inicializar o banco de dados, garantindo que ele esteja pronto para uso.

  • O que significa `Future` em Dart?

    `Future` é um objeto que representa a conclusão de uma operação assíncrona, permitindo que o código aguarde sua execução.

  • Como garantir a persistência de dados?

    Persistência de dados é alcançada ao salvar informações em um banco de dados, que podem ser recuperadas posteriormente.

  • Por que usar `await` nas operações de banco de dados?

    `await` é utilizado para esperar a finalização de uma operação assíncrona antes de prosseguir, evitando que o código continue com informações não carregadas.

  • O que é uma tabela em um banco de dados?

    Uma tabela é uma estrutura que armazena dados em um banco de dados, composta por colunas e linhas.

  • Como se define a estrutura de uma tabela em SQLite?

    A estrutura de uma tabela é definida usando a instrução SQL `CREATE TABLE`, especificando os nomes das colunas e seus tipos de dados.

  • O que é a chave primária em uma tabela?

    A chave primária é uma coluna que identifica exclusivamente cada registro em uma tabela, evitando duplicidades.

View more video summaries

Get instant access to free YouTube video summaries powered by AI!
Subtitles
pt
Auto Scroll:
  • 00:00:12
    considerando então que a gente já tem
  • 00:00:14
    Vamos abrir aqui
  • 00:00:16
    ó tela
  • 00:00:19
    vi modelo mod Model vi volta um carinha
  • 00:00:24
    agora que é o nosso controle tá o nosso
  • 00:00:28
    controle gente a vai fazer a mesma coisa
  • 00:00:31
    vai vir aqui vai criar um novo diretório
  • 00:00:35
    né vai chamar esse diretório de
  • 00:00:37
    controles eu chamo de controles que
  • 00:00:40
    poderia ter mais banco de dados né mais
  • 00:00:42
    tabelas mais
  • 00:00:46
    enfim
  • 00:00:48
    Então a gente vai vir aqui
  • 00:00:52
    agora e vai criar né um novo arquivo e a
  • 00:00:57
    gente vai chamar esse arquivo de com
  • 00:01:02
    controle
  • 00:01:05
    planeta
  • 00:01:07
    pd tá ele vai entrar naquela uma lá
  • 00:01:12
    de eu pedi podin eu podia pedir aqui
  • 00:01:16
    ó faça uma classe crud que use o SQL L
  • 00:01:24
    como gerenciador de banco de
  • 00:01:27
    dados a gente pode fazer isso se vocês
  • 00:01:29
    quiserem ou então e é isso que eu vou
  • 00:01:32
    fazer a gente vai fazendo passo a passo
  • 00:01:34
    aqui dentro de um modelo que eu já tenho
  • 00:01:36
    mas vocês podiam fazer isso daqui ó eu
  • 00:01:38
    posso auxiliar vocês ó control i ó então
  • 00:01:43
    crie uma
  • 00:01:45
    classe que
  • 00:01:50
    implemente
  • 00:01:51
    um
  • 00:01:57
    controlle para
  • 00:02:00
    a
  • 00:02:03
    tabela
  • 00:02:06
    planetas
  • 00:02:09
    do banco de dados
  • 00:02:15
    SQL Light tá eu só faltou uma classe que
  • 00:02:20
    implemente um controle para um controle
  • 00:02:24
    é implemente um cru não um controle para
  • 00:02:28
    para um crud né Esqueci aqui ó para um
  • 00:02:37
    crud de
  • 00:02:40
    planetas do banco de
  • 00:02:42
    dados skl L infelizmente ele vai generar
  • 00:02:47
    aqui né Como diz generating e Opa agora
  • 00:02:51
    ele apareceu aqui algumas coisas aqui ó
  • 00:02:53
    tá vendo só que eu não consigo ver então
  • 00:02:56
    vamos aceitar Depois eu apago ó então
  • 00:02:59
    aqui gente ó Isso aqui é um
  • 00:03:01
    crud então ó controle eu tenho que obter
  • 00:03:06
    o banco de dados eu tenho que abrir o
  • 00:03:08
    banco de dados eu tenho que salvar eu
  • 00:03:12
    tenho que buscar todos eu tenho que
  • 00:03:17
    atualizar um só eu tenho que deletar
  • 00:03:19
    perceberam então isso aqui é um crud só
  • 00:03:22
    que vocês podem observar que ele tá
  • 00:03:24
    dizendo para mim aqui ó que essa
  • 00:03:25
    variável Database aqui ó é é uma
  • 00:03:29
    variável que que ele não conhece então ó
  • 00:03:32
    eu
  • 00:03:33
    vou não aceitar mas funciona por
  • 00:03:36
    incrível que pareça um negócio muito
  • 00:03:38
    legal
  • 00:03:40
    eh mas eu vou fazer ele passo a passo
  • 00:03:43
    para que a gente entenda e eu vou
  • 00:03:45
    dividir em dois momentos a gente vai
  • 00:03:46
    criar a tabela e a gente vai verificar
  • 00:03:49
    se ela tá ok né
  • 00:03:51
    Eh e na sequência a gente vai
  • 00:03:54
    implementar as outras funcionalidades do
  • 00:03:57
    do nosso crud né alg você CIC meio no no
  • 00:04:01
    ar assim P Mas será que ele fez certo né
  • 00:04:03
    Mas ele vai fazer então eu vou dar um
  • 00:04:05
    cont control a aqui vou deletar tudo ó e
  • 00:04:08
    agora eu vou pegar o meu modelo aqui
  • 00:04:10
    vamos começar Ó o meu modelo é esse aqui
  • 00:04:12
    ó então ó eu vou chamar ela de
  • 00:04:16
    classe controle planeta tá então a gente
  • 00:04:20
    vai começar uma classe do zero tá aqui ó
  • 00:04:24
    então aqui ela já vai fechar Então tá
  • 00:04:27
    aqui aí qual que é a nossa primeira
  • 00:04:30
    preocupação na criação dessa Classe A
  • 00:04:32
    primeira preocupação da classe é
  • 00:04:35
    trabalhar com um banco de dados então eu
  • 00:04:39
    vou copiar esse cara aqui ó para dentro
  • 00:04:41
    do nosso
  • 00:04:43
    eh controler então ele já vai ficar aqui
  • 00:04:46
    dentro do das aspas e tal e da mesma
  • 00:04:50
    forma que deu no anterior Ele tá dizendo
  • 00:04:53
    que dat base é Indefinido Então o que
  • 00:04:55
    vocês vão fazer ó vocês vão vir aqui
  • 00:04:57
    agora e vão procurar lá ó SQL Lite
  • 00:05:01
    flutter tá ele vai achar o pacote
  • 00:05:05
    chamado
  • 00:05:06
    eh
  • 00:05:08
    sfl tá então a gente vai pegar esse
  • 00:05:11
    pacote daí aqui ó ele tem as explicações
  • 00:05:15
    como que ele funciona né Qual é o seu
  • 00:05:17
    uso e como é que a gente abre um banco ó
  • 00:05:20
    então daqui a pouco eu vou explicar o
  • 00:05:23
    aight que tá aparecendo aqui e aqui ó
  • 00:05:26
    ele tem aqui os exemplos Então o que eu
  • 00:05:28
    quero que vocês entendam gente é que
  • 00:05:30
    normalmente a gente não faz a coisa do
  • 00:05:32
    zero a gente usa eh exemplos
  • 00:05:37
    eh que nos orientam na criação do do do
  • 00:05:42
    sistema é o que eu faço aqui é o resumo
  • 00:05:45
    Mas vocês podem aqui ó tem um exemplo
  • 00:05:47
    aqui ó de utilização bem completo né Não
  • 00:05:50
    funciona nada então o exemplo tá aqui só
  • 00:05:53
    no ridm mesmo então tem todas as
  • 00:05:55
    explicações aqui para você utilizar mas
  • 00:05:57
    eu vou tentar explicar para vocês mas
  • 00:05:59
    para que eu possa usar esse dito curo eu
  • 00:06:02
    preciso instalar ele então a instalação
  • 00:06:05
    começa por aqui ó então eu vou copiar
  • 00:06:06
    esse cara a gente já fez isso no no
  • 00:06:10
    calculadora lembra para fazer a o lance
  • 00:06:12
    da expressão e vamos colocar ele lá no
  • 00:06:16
    nosso
  • 00:06:18
    Pub spec tá bom esse Pub spec Aqui tá
  • 00:06:22
    cheio de linha aqui né então a gente eu
  • 00:06:26
    vou apagar algumas aqui só para
  • 00:06:31
    Nossa ficar um pouquinho mais despoluído
  • 00:06:34
    né lembra eu peguei um exemplo Pronto né
  • 00:06:36
    então ao pegar um exemplo pronto a gente
  • 00:06:40
    passa Ups passa por
  • 00:06:42
    essas por essas
  • 00:06:44
    eh Ixe agora já fiz besteira aqui pera
  • 00:06:48
    aí agora ele tá me avisando que deu
  • 00:06:50
    problema aqui né então vamos lá Ctrl Z
  • 00:06:52
    cont contrl Z Eu não sei por que ele ele
  • 00:06:56
    ele não não seleciona agora ele
  • 00:06:58
    selecionou tá tá aqui daí aqui também eu
  • 00:07:02
    vou deletar porque isso aqui é
  • 00:07:04
    comentário tá não vai fazer diferença
  • 00:07:08
    pra gente então vou só para ele ficar
  • 00:07:11
    mais limpo aqui pra gente
  • 00:07:14
    conseguir
  • 00:07:16
    trabalhar aqui também
  • 00:07:19
    implementar porque todos esses elementos
  • 00:07:21
    são fundamentais pro funcionamento do
  • 00:07:23
    flutter né então não dá para deletar o
  • 00:07:26
    que não for e aqui daí
  • 00:07:30
    ele vem aqui na parte dos asss aqui
  • 00:07:32
    embaixo ó is aqui eu não vou não vou me
  • 00:07:34
    preocupar tá A gente não vai usar nesse
  • 00:07:37
    sistema aí mas aqui ó eu posso tirar
  • 00:07:40
    umas linas aqui ó e vou colocar aqui ó
  • 00:07:43
    logo aqui dá para dar um enter para
  • 00:07:44
    ficar bonitinho Ó daí eu coloco aqui
  • 00:07:46
    abaixo de copertino
  • 00:07:49
    SF
  • 00:07:52
    241 aí eu mando ele fazer
  • 00:07:56
    o o pubg aqui ó e ele vai se tudo der
  • 00:08:00
    certo aqui né se eu não fiz nenhuma
  • 00:08:02
    besteira
  • 00:08:09
    aqui pelo jeito eu fiz uma besteira
  • 00:08:17
    né deixa eu limpar aqui
  • 00:08:20
    o limpar essa linha aqui para ver não
  • 00:08:24
    deixa Clear output deixa eu aumentar
  • 00:08:27
    aqui ó eu vejo que tá com
  • 00:08:29
    Ah vamos aqui pro Pub tá vamos rodar
  • 00:08:33
    aqui e ver o que que ele acontece aqui ó
  • 00:08:36
    aqueles erros eram coisas do passado
  • 00:08:38
    Então o que tudo indica agora ele
  • 00:08:40
    funcionou aqui ó então uma vez
  • 00:08:43
    funcionando a gente pode
  • 00:08:46
    e fechar essa essa parte aqui de baixo e
  • 00:08:51
    a gente pode agora fechar aqui o
  • 00:08:54
    pubs e importar a biblioteca compatível
  • 00:08:58
    com o Database aqui aqui né então vamos
  • 00:09:00
    lá no quick Fix ele vai aparecer duas a
  • 00:09:02
    gente vai pegar a
  • 00:09:04
    sqflite ó ele automaticamente vai
  • 00:09:07
    importar a biblioteca e já vai
  • 00:09:08
    reconhecer agora
  • 00:09:12
    o a nossa classe Database né E a nossa
  • 00:09:17
    variável aqui local né no caso a
  • 00:09:19
    Instância local né Ela é uma Instância
  • 00:09:22
    Private né do banco de dados que vai ser
  • 00:09:25
    manipulado que que é manipular um banco
  • 00:09:27
    de dados gente vocês já fizeram a
  • 00:09:28
    disciplina no banco de dados então vocês
  • 00:09:30
    T que criar tabela incluir na tabela
  • 00:09:33
    buscar na tabela deletar né alterar um
  • 00:09:37
    elemento da tabela Então isso que faz
  • 00:09:39
    parte aqui do controle Mas a gente não
  • 00:09:41
    pode incluir não pode deletar não pode
  • 00:09:43
    alterar não pode verificar o que tem D
  • 00:09:45
    se a gente não abrir o banco de dados tá
  • 00:09:49
    então é isso que a gente vai fazer
  • 00:09:52
    agora então aqui ó o primeiro passo eu
  • 00:09:56
    vou copiar aqui ó da eu vou explicando
  • 00:09:57
    fica meem mais fácil
  • 00:10:00
    eu vou criar o get
  • 00:10:03
    n é que fica estanho ch pegar né mas é
  • 00:10:08
    pegar o banco de dados então a gente ch
  • 00:10:10
    get n então só vou colocar aqui
  • 00:10:15
    agora formatar para vocês entenderem
  • 00:10:18
    primeiro seguinte todas as operações que
  • 00:10:21
    a gente faz com banco de dados elas um
  • 00:10:23
    tempo de operação tá se elas um tempo de
  • 00:10:26
    operação eu V fazer aqui o exemplo
  • 00:10:30
    para vocês verem como é que isso
  • 00:10:33
    funciona vou tirar aqui vou tirar aqui ó
  • 00:10:37
    tá B perceba que o INB tá dando Pan aqui
  • 00:10:41
    por porque ele é o cara que vai iniciar
  • 00:10:44
    o banco de dados então eu vou copiar
  • 00:10:46
    aqui também só pra gente ir trabalhando
  • 00:10:48
    que eu tenho aqui o init BD só para ele
  • 00:10:50
    não dar aquele erro para mim explicar
  • 00:10:52
    para vocês ou para eu explicar melhor né
  • 00:10:55
    Para eu explicar para vocês
  • 00:10:57
    [Música]
  • 00:11:00
    esses procedimentos O legal é que se
  • 00:11:02
    você fizer isso aí para uma um banco
  • 00:11:04
    você vai fazer para todos os bancos de
  • 00:11:09
    dados que vocês vierem a
  • 00:11:11
    utilizar no futuro bom que que acontece
  • 00:11:14
    aqui vou apagar esse Future Aqui
  • 00:11:17
    também tá consequentemente vou apagar o
  • 00:11:21
    ass aqui ó e vou apagar ight aqui tá
  • 00:11:25
    beleza já viu que já deu um erro aqui
  • 00:11:29
    o seguinte ó aqui em cima parou de dar
  • 00:11:32
    erro eu vou ver se eu consigo dar uma
  • 00:11:34
    formatada no documento tá ó ficou
  • 00:11:37
    bonitinho documento aí então ó get
  • 00:11:39
    Database que que é eu vou
  • 00:11:43
    inicializar um banco de dados que eu vou
  • 00:11:46
    chamar de planetas pon
  • 00:11:49
    DB se você tiver várias tabelas você
  • 00:11:54
    pode chamar ele do conjunto da obra
  • 00:11:57
    então por exemplo assim você vai fazer
  • 00:11:58
    um sistema de gerenciamento lá de
  • 00:12:01
    disciplinas que eu vi que alguém falou
  • 00:12:03
    então você vai criar lá um banco de
  • 00:12:05
    dados chamado
  • 00:12:07
    planejamento escolar PDB eu não
  • 00:12:11
    recomendo que se ponha espaço porque ele
  • 00:12:13
    ele é meio Tosco né aqui como a gente tá
  • 00:12:15
    trabalhando só com planetas chamei de
  • 00:12:17
    planetas Mas eu posso dar um nome mais
  • 00:12:19
    sugestivo porque eu posso ter um
  • 00:12:20
    conjunto de tabelas Imagina eu tenho uma
  • 00:12:23
    tabela que lida com clientes com
  • 00:12:26
    fornecedores com vendas né produtos
  • 00:12:29
    enfim aí eu não vou chamar o banco de
  • 00:12:31
    dados de fornecedores Vou chamar o banco
  • 00:12:33
    de dados de sei lá loja eu vou chamar o
  • 00:12:36
    banco de dados de controle então aqui
  • 00:12:40
    saiu o nome planetas porque a gente só
  • 00:12:44
    tá configurando planetas né agora
  • 00:12:46
    Observe o seguinte a primeira coisa que
  • 00:12:48
    eu tenho que fazer aqui ó é verificar se
  • 00:12:51
    o banco de
  • 00:12:54
    dados que eu tenho é diferente de n
  • 00:12:59
    porque se ele for diferente de nul
  • 00:13:00
    significa que ele já existe então ó se
  • 00:13:03
    ele for diferente de nul eu retorno já
  • 00:13:05
    ao banco de dados aqui ó que ele já
  • 00:13:08
    instanci e tá tudo bonitinho mesma coisa
  • 00:13:11
    ele tem um carinha aqui porque ele pode
  • 00:13:13
    ser nulo então quando ele ele eu põe
  • 00:13:15
    interrogação na na no final aqui
  • 00:13:19
    né aliás exclamação é porque ele ele
  • 00:13:23
    exigiu isso em função da da da sintaxe
  • 00:13:26
    aí ó se ele não for nulo
  • 00:13:29
    se ele não é nulo significa o
  • 00:13:32
    quê que ele existe Agora se ele for nulo
  • 00:13:37
    aí a coisa muda um pouquinho de figura
  • 00:13:40
    eu tenho que inicializar esse banco de
  • 00:13:43
    dados criar mas ele só vai criar uma vez
  • 00:13:45
    concorda comigo porque nas outras vezes
  • 00:13:48
    ele não vai mais
  • 00:13:49
    ser nulo ele não sendo nulo ele entra
  • 00:13:54
    nessa linha aqui e retorna O banco de
  • 00:13:55
    dados da boa mas vocês vão fazer ele
  • 00:13:58
    pela primeira vez eu também vou fazer
  • 00:14:00
    pela primeira vez logo eu vou ter que
  • 00:14:02
    dar um init BD aqui e retornar o nosso
  • 00:14:05
    BD aqui para que ele continu ver é a
  • 00:14:08
    mesma linha aqui de cima ó dáa até para
  • 00:14:10
    fazer um if mais bonito né mas como diz
  • 00:14:12
    o outro foi assim que eu pensei mas se
  • 00:14:15
    vocês quiserem fazer uma coisinha mais
  • 00:14:17
    estruturada dá para fazer de outra forma
  • 00:14:19
    que o nosso if né aqui se if return
  • 00:14:23
    senão BD vai inicializar e tal agora
  • 00:14:26
    perceba que aqui o in ó tá dando esse
  • 00:14:29
    aqui ó exatamente aqui ó no no no join ó
  • 00:14:33
    ele vai
  • 00:14:34
    dizer bom é que aqui ele tem acho que eu
  • 00:14:37
    tenho pera aí deixa eu ver se eu tenho
  • 00:14:40
    o o join Aqui para baixo acho que eu não
  • 00:14:44
    tenho join é uma
  • 00:14:46
    característica
  • 00:14:48
    join só tem ess então é coisa da da
  • 00:14:52
    nossa string lá mas a gente já resolve
  • 00:14:55
    então Ó esse Open Database aqui ó ele tá
  • 00:14:57
    dizendo ó que a variável ela é do tipo
  • 00:15:01
    Future Database o que que é um
  • 00:15:05
    Future é uma coisa que precisa ser
  • 00:15:09
    processada Eu já falei acho que isso na
  • 00:15:12
    na web de forma assíncrona se ela é de
  • 00:15:14
    forma assíncrona ela vai demorar para me
  • 00:15:18
    dar o resultado então eu vou ter que
  • 00:15:21
    esperar se eu tenho que esperar eu tenho
  • 00:15:24
    que a wait né aí o que que a gente tem
  • 00:15:29
    fazer a gente tem que pôr aqui na frente
  • 00:15:30
    um
  • 00:15:31
    await tá beleza aqui já não deu mais
  • 00:15:35
    erro né só que não deu erro aqui ó
  • 00:15:40
    mas deu um erro aqui no
  • 00:15:43
    await por qu para que eu possa usar o
  • 00:15:47
    aight dentro do meu do meu sistema
  • 00:15:54
    Obrigatoriamente o procedimento ao qual
  • 00:15:57
    ele tá vinculado tem que ser
  • 00:16:00
    Future é só você vir aqui no quick Fix ó
  • 00:16:02
    e adicionar a aqui ó quando você
  • 00:16:05
    adicionar o assíncrono aqui ele
  • 00:16:06
    automaticamente coloca o Future aqui ó e
  • 00:16:10
    automaticamente ele ele passa a
  • 00:16:15
    funcionar o join aqui ó vamos ver qual é
  • 00:16:17
    o problema do join Ele tá dizendo que
  • 00:16:19
    não tem problema dizendo que tem que
  • 00:16:21
    criar o mé para que eu
  • 00:16:24
    não possa continuar ve o que aconteceu
  • 00:16:28
    no momento que eu transformei init BD
  • 00:16:32
    num procedimento assíncrono Future
  • 00:16:35
    começou a dar erro aqui em cima também ó
  • 00:16:37
    por esse cara aqui também vai precisar
  • 00:16:42
    descer adicionar um cast que não
  • 00:16:44
    funciona direito ou eu colocar aqui um
  • 00:16:49
    await ó então Toda vez que você for
  • 00:16:51
    fazer uma chamada e essa chamada
  • 00:16:53
    Originalmente porque o Database Não fui
  • 00:16:55
    eu que fiz tá vindo do nosso pacote esse
  • 00:16:59
    cara exige que você faça essa chamada
  • 00:17:02
    assíncrona Então eu preciso
  • 00:17:03
    Obrigatoriamente dar um tempo para que
  • 00:17:07
    ele se oriente lá e me traga o resultado
  • 00:17:09
    então de uma forma bem simplista o
  • 00:17:11
    procedimento para nesse momento até que
  • 00:17:14
    a resposta chegue só que quando eu
  • 00:17:16
    coloquei a weit aqui automaticamente eu
  • 00:17:18
    tenho que adicionar o assíncrono aqui
  • 00:17:20
    ele volta a ser Future lá e a coisa
  • 00:17:23
    começa a fluir perceba que ainda agora
  • 00:17:25
    tá dando aqui um erro aqui de criar o
  • 00:17:27
    banco de dados né
  • 00:17:29
    E então esse erro que tá dando de criar
  • 00:17:31
    o banco de dados É porque eu não tenho
  • 00:17:33
    procedimento então eu vou buscar o
  • 00:17:35
    procedimento lá no meu abac ó tá aqui o
  • 00:17:38
    Create banco de datos vocês vão rir
  • 00:17:40
    agora que eu acho que vocês já fizeram
  • 00:17:42
    algo similar lá na disciplina de banco
  • 00:17:45
    de dados né Vocês usaram tal do Create
  • 00:17:48
    né então a gente vai usar um Create aqui
  • 00:17:50
    ó tá quando eu colocar aqui o Create
  • 00:17:54
    eh o que que vai acontecer aqui ó eh
  • 00:17:58
    depois eu resolvo join lá eu vou criar o
  • 00:18:01
    meu banco de dados bom para eu criar um
  • 00:18:03
    banco de dados eu preciso do banco de
  • 00:18:05
    dados propriamente título e da versão
  • 00:18:08
    desse banco de dados isso é exigido por
  • 00:18:12
    esse por essa propriedade aqui ó olha lá
  • 00:18:15
    ó function Database Intel perceberam
  • 00:18:19
    aqui ó a minha função tá aqui ó cria BD
  • 00:18:24
    e ela tem Database e Inter Ó lá vamos
  • 00:18:28
    Create aqui ó Database e int e ela
  • 00:18:32
    também é com interrogação Então ela é
  • 00:18:34
    uma Future já coloquei Future aqui para
  • 00:18:36
    colocar Olha o que que eu fiz aqui gente
  • 00:18:38
    eu coloquei
  • 00:18:40
    aqui criar banco de dados né então
  • 00:18:44
    quando que ele vai criar banco de dados
  • 00:18:46
    quando ele entrar no init BD aqui ó que
  • 00:18:49
    eu preciso daí criar condições
  • 00:18:53
    né Para que eu
  • 00:18:56
    possa trabalhar né é a criação do
  • 00:19:00
    planeta DB depois que ele criou aqui ó
  • 00:19:02
    ele essa linha vai ser executada ele ele
  • 00:19:05
    vai ser diferente de n então ele já vai
  • 00:19:07
    voltar então isso aqui Obrigatoriamente
  • 00:19:09
    só vai fazer uma vez mas eu tenho que
  • 00:19:12
    preparar isso daqui ó aí que eu fiz aqui
  • 00:19:14
    ó Create table planetas né agora é uma
  • 00:19:18
    tabela e eu tenho o ID que é um
  • 00:19:22
    inteiro então a gente vem aqui na nossa
  • 00:19:25
    classe aqui ó deixa eu fechar aqui ó na
  • 00:19:27
    nossa classe planeta ó
  • 00:19:29
    ID nome tamanho distância e apelido lá
  • 00:19:34
    no controle eu vou ter ID nome tamanho
  • 00:19:38
    distância e
  • 00:19:39
    apelido ID agora é um
  • 00:19:42
    inteiro vai ser a nossa chave primária
  • 00:19:45
    para evitar a duplicação e vai ser do
  • 00:19:47
    tipo autoincremento então por isso que
  • 00:19:49
    eu não me preocupei aqui no formulário
  • 00:19:51
    em colocar ele para ser utilizado porque
  • 00:19:54
    ele vai ser tratado internamente pelo
  • 00:19:56
    banco de dados
  • 00:19:58
    nome Tex note nul se eu coloquei aqui no
  • 00:20:03
    banco de dados que ele é note
  • 00:20:04
    nul explica o porqu do required aqui
  • 00:20:09
    ó e a mesma
  • 00:20:12
    coisa tá acontecendo aqui ó para o
  • 00:20:18
    eh tamanho vai ser do tipo real né que é
  • 00:20:23
    um varia né A nomenclatura em função da
  • 00:20:27
    aplicação né no caso aqui eh no banco de
  • 00:20:30
    dados ele vai chamar de real mas para
  • 00:20:32
    nós lá é um é um double né em outras
  • 00:20:34
    linguagens vai ser um float e assim
  • 00:20:36
    sucessivamente e ó também ó note nul e
  • 00:20:39
    note nul e apelido é um text simples que
  • 00:20:42
    pode ser em branco então Ó esse carinha
  • 00:20:45
    aqui
  • 00:20:46
    ó é 100% compatível com esse carinha
  • 00:20:52
    aqui e agora eu fiz a ligação da tabela
  • 00:20:56
    com a classe quando eu fiz a quando eu
  • 00:20:58
    faço essa ligação da tabela com a classe
  • 00:21:01
    eu criei o conceito de persistência o
  • 00:21:04
    que eu fizer no momento que eu tô
  • 00:21:06
    executando vai ser gerido pela classe e
  • 00:21:08
    no momento que eu terminar ele vai est
  • 00:21:11
    sendo armazenado ou seja persistido né
  • 00:21:14
    garantido que eu acesse ele futuramente
  • 00:21:17
    lá no banco de dados então isso a gente
  • 00:21:19
    chama de
  • 00:21:20
    persistência quando a gente fez esse
  • 00:21:22
    carinha aqui ó a persistência ficou aqui
  • 00:21:25
    ó esse banco aqui ó Mas você vocês cada
  • 00:21:29
    vez que mexiam em alguma coisa aqui
  • 00:21:31
    automaticamente vocês perdiam
  • 00:21:34
    né esse essa
  • 00:21:36
    característica que vocês tinham colocado
  • 00:21:38
    a mais porque nós não fizemos nenhuma
  • 00:21:40
    rotina aqui de atualizar essa essa
  • 00:21:42
    persistência aqui ao passo que aqui a
  • 00:21:45
    gente vai fazer automaticamente né então
  • 00:21:48
    ó deixa eu só olhar o meu Ábaco aqui ó
  • 00:21:51
    por que tá dando aquele erro no join lá
  • 00:21:54
    que eu não entendi até agora né ah ó fal
  • 00:21:58
    fal o pef aqui ó tá vendo É isso que
  • 00:22:03
    falta então quando eu colocar o pf aqui
  • 00:22:05
    ó junto lá aqui um pouquinho aqui ó aqui
  • 00:22:09
    ó
  • 00:22:10
    pef ele vai colocar em azul para mim
  • 00:22:13
    ó ele diz assim ó o Packet pef não está
  • 00:22:18
    nas suas dependências então o que que eu
  • 00:22:21
    faço ó eu dou um quick Fix aqui
  • 00:22:24
    ó e a última opção aqui ó adicione PF as
  • 00:22:28
    dependências
  • 00:22:29
    agora ele vai lá no pub e para de dar o
  • 00:22:32
    erro aqui ó e se a gente voltar aqui
  • 00:22:35
    agora lá no pub Dev ó pubspec desculpe
  • 00:22:40
    vai aparecer
  • 00:22:42
    aqui pef
  • 00:22:44
    ó então alguns Alguns não todos
  • 00:22:50
    e ele sugere para você daí ele
  • 00:22:53
    automaticamente fez aqui a a inclusão do
  • 00:22:56
    pef e daí parou erro aqui ó agora o
  • 00:22:59
    caminho Deb tá dando erro ainda porque
  • 00:23:02
    esse caminho Deb por algum motivo aqui
  • 00:23:05
    deixa eu ver e
  • 00:23:09
    WC sei lá se eu peguei o pf correto
  • 00:23:12
    agora mas vamos lá então agora aqui join
  • 00:23:16
    caminho BD onde que tá caminho BD aqui
  • 00:23:18
    caminho BD un final Y que que é isso
  • 00:23:21
    cara é só a gente V ó é um Future string
  • 00:23:24
    aqui ó então aqui ó por isso que ele tá
  • 00:23:27
    dando esse se a gente vir aqui ó colocar
  • 00:23:30
    um await aqui
  • 00:23:32
    ó para de dar erro daí você P Professor
  • 00:23:36
    como é que eu vou lembrar de tudos esses
  • 00:23:38
    negócios aí é complicado né mas sempre
  • 00:23:42
    que você tiver dúvida ele disse assim ó
  • 00:23:46
    que aqui tá dando um erro daí ele falou
  • 00:23:49
    para mim assim ó o argumento Future
  • 00:23:51
    string não pode ser associado ao string
  • 00:23:54
    Então como que eu trans transformo uma
  • 00:23:57
    string Futura numa
  • 00:23:59
    string simples né não deixa ela ir pro
  • 00:24:03
    Futuro ou se ela espera ela voltar do
  • 00:24:05
    Futuro ó Pronto está Opa tá aqui o nosso
  • 00:24:08
    await entenderam mais ou menos a lógica
  • 00:24:11
    eu passei em cima aqui ó é um string ó
  • 00:24:13
    tá vendo agora esse cara aqui ó o get
  • 00:24:16
    que é o que foi colocado no caminho
  • 00:24:20
    BD ele é um Future string ou seja ela
  • 00:24:26
    vai ser processada e vai demorar para
  • 00:24:29
    voltar então a gente coloca o await no
  • 00:24:31
    momento que eu colocar o await eu espero
  • 00:24:34
    o que tá que é que vai que é uma
  • 00:24:37
    informação futura você transformar numa
  • 00:24:39
    numa informação presente e dessa forma
  • 00:24:42
    você elimina o erro aqui ó dessa forma
  • 00:24:45
    aqui gente que que aconteceu no meu
  • 00:24:47
    sistema aqui
  • 00:24:48
    ó eu
  • 00:24:51
    tenho condições de verificar se eu tenho
  • 00:24:54
    um banco de
  • 00:24:55
    dados se eu não tiver o banco de dados
  • 00:24:57
    eu vou inar esse banco de dados como é
  • 00:25:00
    que a gente inicia um banco de dados a
  • 00:25:02
    gente ajusta aqui ó Isso aqui é por ó
  • 00:25:06
    esse cara aqui gente é interno de cada
  • 00:25:09
    sistema então por exemplo o Android ele
  • 00:25:13
    já vem com o sistema SQL L embarcado
  • 00:25:17
    junto com o próprio Android e quando ele
  • 00:25:19
    faz essa configuração ele disponibiliza
  • 00:25:22
    variáveis e que a gente chama de
  • 00:25:24
    ambiente essas variáveis de ambiente são
  • 00:25:27
    as que que a gente busca com esses
  • 00:25:29
    procedimentos aqui ó então o get
  • 00:25:31
    Database pef vai buscar essa variável
  • 00:25:33
    para dizer ah ah lá no diretório tal
  • 00:25:37
    está armazenado o meu banco de dados
  • 00:25:43
    eh SQL Lite nesse dispositivo então o
  • 00:25:47
    que que eu faço eu pego esse caminho e
  • 00:25:49
    dou um join esse join aqui ó
  • 00:25:53
    simplesmente pego esse caminho mais o
  • 00:25:55
    local do arquivo né o local do arquivo é
  • 00:25:57
    string que tá vindo ó no init Deb aqui ó
  • 00:26:02
    entende ó Então essa string que tá vindo
  • 00:26:03
    aqui é planetas então ele vai pegar o
  • 00:26:07
    caminho que só Jesus e quem fez o o
  • 00:26:11
    sistema ou instalou o Android sabe mas o
  • 00:26:14
    nome que eu sei que é planetas ponto DB
  • 00:26:17
    Então é isso que eu fiz aqui ó aí com
  • 00:26:19
    esse caminho eu posso abrir o meu banco
  • 00:26:22
    de dados e daí no open banco aqui ó ele
  • 00:26:26
    tem as opções ó com configuração com on
  • 00:26:30
    Create com upgrade ou somente Abrir nós
  • 00:26:34
    estamos colocando a opção on Create o
  • 00:26:36
    que que é essa opção Create caso ele não
  • 00:26:38
    exista eu crio Então é isso que eu fiz
  • 00:26:42
    assim como é que eu crio esse cara aqui
  • 00:26:43
    ó com esse comão vocês viram que aqui
  • 00:26:47
    apareceu
  • 00:26:49
    três aplicas aqui né Isso é quando eu
  • 00:26:52
    quero colocar uma string com várias
  • 00:26:54
    linhas entendeu então eu posso colocar
  • 00:26:56
    aquele lance que eu coloquei de aspas
  • 00:26:58
    aspas uma do ladinho da outra ou três a
  • 00:27:01
    gente coloca desse jeito porque fica
  • 00:27:03
    mais bonitinho ó ele fica exatamente na
  • 00:27:06
    na configuração que vocês devem ter
  • 00:27:08
    visto lá em banco de dados ó Create
  • 00:27:11
    table nome dela e daí a lista
  • 00:27:15
    de Campos que vão fazer parte dessa
  • 00:27:19
    tabela então agora agora não né depois
  • 00:27:22
    e a gente vai ter uma tabela chamada
  • 00:27:26
    planetas no banco de dados planeta PDB
  • 00:27:30
    que é um arquivo que tá gravado lá
  • 00:27:32
    dentro não sei se eu fui Claro mas dessa
  • 00:27:35
    forma eu já tenho agora a parte
  • 00:27:38
    configurada né do meu banco de dados e
  • 00:27:43
    se vocês
  • 00:27:46
    e rodarem aqui por exemplo aqui na tela
  • 00:27:50
    planeta o que a gente faz agora aqui ó é
  • 00:27:53
    a mesma coisa ó a gente vem aqui agora e
  • 00:27:55
    cria uma variável né essa variável ela
  • 00:27:59
    vai
  • 00:28:01
    ser do tipo controle planeta né então
  • 00:28:05
    aqui ó CRL v a gente vai chamar da mesma
  • 00:28:09
    forma de olha exército zer controle
  • 00:28:12
    planeta controle planeta e daí aqui ele
  • 00:28:15
    tá dando uns erros aqui ó por quê eu
  • 00:28:17
    tenho que localizar aqui então vou
  • 00:28:19
    importar ali controles como biblioteca e
  • 00:28:22
    pode ver que agora ficou tudo azul aqui
  • 00:28:24
    ó esse azul ficou por quê Porque ele tá
  • 00:28:27
    dizendo que ela pode ser final ó Tá e
  • 00:28:30
    agora controle planeta aqui ó não não
  • 00:28:33
    como é que se diz não e tá tá tá em com
  • 00:28:37
    essa linha marronzinha porque ele não
  • 00:28:39
    foi utilizado ainda né que esse é vai
  • 00:28:42
    ser o nosso próximo passo Mas vejam bem
  • 00:28:45
    o que que eu fiz aqui ó eu tô mostrando
  • 00:28:47
    para vocês o que que é o
  • 00:28:49
    controle nesse sistema mvc então o
  • 00:28:53
    controle é toda a parte de gestão da
  • 00:28:56
    informação nos n processos que a gente
  • 00:28:59
    vai utilizar os os mais comuns são
  • 00:29:03
    exatamente os os procedimentos de
  • 00:29:05
    persistência e o que que são esses
  • 00:29:07
    procedimentos de persistência é você
  • 00:29:10
    pegar uma informação que é volátil né
  • 00:29:13
    que ela está na memória do equipamento
  • 00:29:15
    ou do computador ou do smartphone enfim
  • 00:29:18
    ou de qualquer dispositivo que vocês
  • 00:29:21
    imaginarem e transformar ela numa
  • 00:29:23
    informação perene que daí que a gente
  • 00:29:26
    chama de persistência né então em Inglês
  • 00:29:29
    fica mais bonito né we are persist né
  • 00:29:32
    então nós persistimos então essa
  • 00:29:35
    persistência ela começa primeiro
  • 00:29:38
    com buscar o banco de dados aqui né
  • 00:29:42
    get Por que que são assíncronos porque
  • 00:29:46
    esses procedimentos são futuros eu tenho
  • 00:29:48
    que abrir e ou Abrir demanda rodar um
  • 00:29:52
    processo esse processo pode não ser
  • 00:29:54
    imediato então ela vai ficar rodando até
  • 00:29:57
    ela te dar a resposta então a gente
  • 00:29:58
    coloca esse weit para que o programa não
  • 00:30:02
    siga e porque se ele seguir ele pode vir
  • 00:30:04
    com uma informação nula e essa
  • 00:30:06
    informação nula não representa a
  • 00:30:07
    realidade porque você não deixou ele
  • 00:30:09
    trazer Então a gente tem que usar o
  • 00:30:11
    aight aqui a mesma coisa aqui ó eu vou
  • 00:30:14
    pegar o o pef e eu posso demorar porque
  • 00:30:18
    levar então eu preciso esperar e dentro
  • 00:30:21
    da
  • 00:30:22
    programação A gente buscou são coisas
  • 00:30:26
    chatas de fazer mas com um uma
  • 00:30:28
    característica né isso aqui
  • 00:30:30
    ó só troca o nome aqui do planetas e só
  • 00:30:36
    troca o Create pras outras tabelas que
  • 00:30:41
    eu vou gerenciar então o que que
  • 00:30:44
    acontece se você criar esse cara aqui ó
  • 00:30:46
    eh eu não coloquei aqui mas a gente pode
  • 00:30:49
    colocar uma característica de deixar
  • 00:30:51
    isso daqui é bem estático ele criar uma
  • 00:30:54
    única Instância em todo o sistema mas
  • 00:30:56
    para nós não vai fazer diferença se
  • 00:30:58
    fizesse eu mostraria então a gente cria
  • 00:31:00
    isso aqui uma vez só e depois você vai
  • 00:31:02
    replicando isso PR programas futuros tá
  • 00:31:06
    então em vendo isso agora que que falta
  • 00:31:10
    pra gente agora né falta a
  • 00:31:13
    gente manipular essa tabela manipular
  • 00:31:16
    esse banco de dados gravar informações
  • 00:31:19
    deletar informações então agora esse é o
  • 00:31:24
    nosso próximo vamos dizer assim passo né
  • 00:31:28
    eu vou criar algumas informações e
  • 00:31:31
    depois eu vou mostrar essas informações
  • 00:31:33
    e por último a gente vai fazer a gestão
  • 00:31:36
    dessas informações né então como eu
  • 00:31:38
    sempre digo aqui efetivamente você não
  • 00:31:42
    observa nada de novo no no sistema né
  • 00:31:46
    Porque eu só coloquei aqui mas não tô
  • 00:31:48
    utilizando Mas em breve a gente já vai
  • 00:31:51
    trabalhar nisso né então mã à obra
Tags
  • CRUD
  • SQLite
  • Flutter
  • Banco de Dados
  • Programação
  • Desenvolvimento Móvel
  • Persistência de Dados
  • Assíncrono
  • Dart
  • Tabelas