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

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

Resumen

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).

Para llevar

  • 📚 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.

Cronología

  • 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.

Ver más

Mapa mental

Vídeo de preguntas y respuestas

  • 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.

Ver más resúmenes de vídeos

Obtén acceso instantáneo a resúmenes gratuitos de vídeos de YouTube gracias a la IA.
Subtítulos
pt
Desplazamiento automático:
  • 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
Etiquetas
  • CRUD
  • SQLite
  • Flutter
  • Banco de Dados
  • Programação
  • Desenvolvimento Móvel
  • Persistência de Dados
  • Assíncrono
  • Dart
  • Tabelas