Backend de Node. js para iniciantes no Flutter | Rahul Agarwal | Skillshare
Pesquisar

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Backend de Node. js para iniciantes no Flutter

teacher avatar Rahul Agarwal, Flutter Developer & Trainer

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Introdução ao curso

      0:51

    • 2.

      Configurar um projeto Node js

      7:50

    • 3.

      Criando rotas

      5:07

    • 4.

      Configurar o Atlas do MongoDB

      7:00

    • 5.

      Conecte aplicativo Node ao MongoDB

      7:45

    • 6.

      Criando modelo de Anotação

      6:43

    • 7.

      Rota para adicionar nota

      8:02

    • 8.

      Obter notas por ID de usuário

      10:44

    • 9.

      Rota para atualização e exclusão

      10:32

    • 10.

      Organize nossas rotas

      7:57

    • 11.

      Push código para o Github

      5:25

    • 12.

      Implante seu repositório

      6:13

    • 13.

      Crie um projeto de flutter

      7:54

    • 14.

      Criar modelo de Anotação

      8:17

    • 15.

      Interface de usuário da home page

      5:42

    • 16.

      Adicione uma IU de Anotação

      7:07

    • 17.

      Criando provedor de notas

      8:09

    • 18.

      Mostrar notas na página inicial

      12:12

    • 19.

      Trabalhar na página de Editar nota

      11:20

    • 20.

      Função para adicionar nota

      8:13

    • 21.

      Funcionalidade para atualizar e excluir

      4:12

    • 22.

      Função para buscar notas

      7:01

    • 23.

      Função para armazenar userid

      7:30

    • 24.

      Teste o aplicativo completo

      5:58

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

14

Estudantes

--

Sobre este curso

Node js Backend para iniciantes no Flutter é um tutorial essencial que capacita os desenvolvedores do Flutter a criar soluções personalizadas de backend usando Node js e MongoDB, libertando-se das possíveis limitações e despesas associadas ao Firebase. Neste guia abrangente, você mergulhará profundamente no processo de criação de uma base de código robusta de servidor e implantá-la perfeitamente com a ajuda do aplicativo Railway. Embora a autenticação não seja coberta, você explorará o pacote popular do Provedor como ferramenta de gerenciamento de estado.

Com instruções passo a passo e exemplos práticos, você aprenderá os prós e contras das operações de CRUD, permitindo desenvolver uma base sólida no desenvolvimento de backend. Ao aproveitar o poder do Node js e do MongoDB, você ganhará controle total sobre seus dados e desfrutará da flexibilidade para adaptar seu backend para atender às suas necessidades específicas.

Além disso, este livro enfatiza a importância de evitar o aprisionamento de fornecedores optando por uma solução de backend personalizada. Embora o Firebase ofereça conveniência, isso pode se tornar caro a longo prazo, especialmente à medida que seu aplicativo aumenta e a quantidade de dados processados. Ao alavancar o Node js e o MongoDB, você não só reduzirá seus gastos, mas também ganhará a liberdade para otimizar sua infraestrutura de backend de acordo com seus requisitos únicos.

Conheça seu professor

Teacher Profile Image

Rahul Agarwal

Flutter Developer & Trainer

Professor

Hello, I'm Rahul. I am skilled in building cross platform application using Flutter. I am freelance developer as well as conduct workshops to share my knowledge with the community.

Visualizar o perfil completo

Level: Intermediate

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução ao curso: Você é um desenvolvedor de flutter quer levar suas habilidades para o próximo nível, não introduzindo nenhum back-end GAS para iniciantes em flutter O guia definitivo da dívida apresentará a você o mundo da criação de back-ends personalizados. Neste curso, você aprenderá a criar sistemas de back-end poderosos usando os novos GS e Mongo DB, libertando-se das limitações do Fire Base e evitando a dispendiosa dependência de fornecedores Desde escrever o código do servidor até dominar as operações de credibilidade e, finalmente, implantá-lo usando o aplicativo ferroviário, você ganhará experiência prática na criação de uma arquitetura de back-end personalizada desenvolvendo um aplicativo básico revestido até o final do curso Além disso, para garantir o gerenciamento contínuo do estado, usaremos o popular pacote de provedores Este curso definitivamente ajudará você a superar a maioria dos desenvolvedores que não sabem como criar seu próprio back-end e estão presos apenas a fireways Então, sem perder mais tempo. Vamos começar. 2. Configurar um projeto Node js: Oi. Bem-vindo ao primeiro vídeo do curso, onde aprenderemos como criar um backback personalizado usando No JS e Mongo DV para nosso aplicativo mais plano Então, a primeira coisa que precisamos fazer é não instalar nenhum GS em seu sistema. Então acesse seu navegador e digite nos.org. E a partir daqui, você pode simplesmente baixá-lo e instalá-lo. Estou usando um sistema máximo, mas se você estiver no Windows, basta alterá-lo por meio de downloads e do instalador do Windows. Então, como você pode ver, vou escrever V e tenho a versão. Então, após a instalação, se você puder ver essa versão na sua linha de comando, isso significa que você instalou com sucesso o no es. E o NPM será instalado automaticamente sem Jaz, então não precisamos pensar nisso Se eu escrever a versão NPM. Então, eu também tenho o NPM. Depois de instalar o node js, precisamos criar um projeto node JS. Então, vá para o diretório desejado e crie uma nova pasta. Vou chamá-lo de aplicativo Nodes. Dentro do aplicativo Nodes, crie outra pasta chame-a de back-end. Nessa pasta, todo o código do servidor estará lá. E mais tarde, criaremos outra pasta chamada front end, que consistirá em todo o código flutter Então, agora precisaremos de um ponto de entrada para nosso servidor. Assim como no flutter, é o arquivo principal de pontos Então, dentro da pasta de back-end, crie um novo arquivo JS, e ele será um arquivo que eu acabarei de abrir no código VS. Abra a pasta. Aqui, estou abrindo esse back-end e aqui vou criar um novo servidor de arquivos. Assim. Se você quiser, você também pode chamá-lo de index do chase, mas estou apenas chamando-o de server do chase Agora, abra um novo terminal nessa pasta de back-end e inicialize o NPM digitando NPM em Y. É assim que você inicializa Você pode ver que o arquivo de entrada principal é o ponto do servidor S. Mas se você não tivesse criado o arquivo JS do ponto do servidor , ele teria usado o S como o arquivo principal. E todos os pacotes ou dependências externas serão mostrados neste arquivo Agora, quando falamos sobre pacotes, o primeiro pacote que precisamos é o pacote expresso. Express JS é uma estrutura que funciona com base na funcionalidade do servidor web net JS para simplificar suas APIs e adicionar novos recursos úteis Isso facilita a organização da funcionalidade de nossos aplicativos com middlewares Então, aqui no pool de back-end do terminal, simp NPM install express assim Você também pode acessar npmjsen.com e pesquisar o pacote expresso se quiser saber mais se quiser saber Bem como você pode ver nas dependências, eu tenho o pacote express Agora vamos criar um servidor expresso. Em primeiro lugar, temos que dizer ao nosso projeto que usaremos o express. Vamos importar ou, você pode dizer, exigir o pacote expresso na parte superior. Basta escrever que const Express é reexpressar e, em seguida, temos que criar uma instância ou objeto do expresso Estou dando o nome de app. Esse é um processo padrão e, em seguida, escreverei o código para iniciar o servidor. Ou seja, vou ouvi-lo na panela três vezes e, depois de bem-sucedido, vou registrar o console. Registro do console aqui. Vou apenas escrever um servidor rodando na porta 3.000. Ok, guarde. Em seguida, tente executar o servidor digitando o nó do terminal e o nome final do servidor e apresentando-o Se o servidor estiver em execução, ou seja, nosso servidor está funcionando. Se você acessar seu navegador e digitar host local 3.000 Então aqui você pode ver que não é possível obter uma barra. Essa é a rota de casa. Mas pelo menos não está mostrando nenhum outro erro, ou seja, a página não é uma resposta ou o servidor não está disponível dessa forma. Isso significa que o servidor está sendo executado com êxito. No próximo vídeo, criaremos algumas rotas para nosso servidor. Obrigado. 3. Criando rotas: Oi Bem vindo de volta. Agora, vamos gerar alguns dados na rota 3.000 do host local Para isso, temos que configurar a solicitação GT para a rota de corte Vamos ver nosso código aqui acima do aplicativo Listen. Vou escrever o aplicativo GT. E então qual rota queremos. Queremos a rota de corte. E sempre que slash route está sendo chamada, queremos que essa função seja executada Solicite uma resposta. Isso nos dá solicitação e resposta. Então, esses são os princípios básicos do Express Framework. Então você deve saber disso. Ou então, você pode simplesmente criar o aplicativo e, eventualmente, entender os conceitos. Então, aqui, você pode simplesmente entender. A solicitação é o que enviamos do front-end para o servidor. Então, suponha que uma pessoa esteja enviando alguns dados de senha de e-mail. Então, buscaremos essas informações por meio dessa variável de solicitação Seja qual for o front-end que estamos enviando, podemos receber a solicitação. Da mesma forma, a resposta é o que enviamos do servidor para o front-end. Então, obviamente, temos quando o fronten está solicitando alguns dados Nós o enviaremos com essa variável de resposta. Então, aqui vamos escrever a resposta dot send. E esta é a página inicial. Por enquanto, são apenas dados fictícios. Obviamente, não enviaremos dados diretamente no formato de string. Só para fazer você entender. Agora, temos que parar o servidor, então basta controlar C e iniciá-lo novamente para que esse código seja atualizado. Agora, se eu for atualizar C, esta é a página inicial Isso significa nossa barra. Sempre que vamos ao nosso bar local do Hos Fit Hus, recebemos essa resposta Mas se formos para qualquer outro nó semelhante , obviamente não podemos obter nós. Agora vamos criar a rota das notas. Como nosso aplicativo será um aplicativo de nó, precisamos criar uma rota para os nós. Abaixo de d é o caminho para casa, pegue então aqui Slash Notes Então, novamente, uma função será chamada solicitação de resposta de solicitação de resposta e eu enviarei resposta de envio. Esta é a página de notas. Salve isso. Novamente, vá e pare o servidor. Eu o salvei e o iniciei novamente. Então, agora, se eu seguir a rota das notas em barra, veja, esta é a página de notas E se eu simplesmente cortar, então esta é a página inicial Então é assim que você cria rotas. E certifique-se de que eu entendi que isso é para as rotas GT. Há um tipo diferente de solicitações, ou seja, g post como essa, você entenderá, mas essa é a básica, que é a solicitação GT. No próximo vídeo, trabalharemos na configuração do banco de dados Mongo DB. Obrigada 4. Configurar o Atlas do MongoDB: Oi, bem vindo de volta. Agora, vamos configurar nosso banco de dados Mongo DB. Usaremos o serviço Atlas Cloud para isso. Então, basta abrir seu navegador e acessar o Mongo DB Atlas. Aqui, em seguida, clique no primeiro link. Em seguida, faça login ou cadastre-se com sua conta do Google. Eu já tenho uma conta, então vou fazer login. Se você for um novo usuário, poderá dar qualquer nome à sua organização e selecionar as opções do Mongo DB Atlas Como estou apenas fazendo login, não vou ver essas coisas, mas, no seu caso, será apenas fornecer o nome da sua organização. Em seguida, selecione a opção Mongo Atlas. Agora, depois de entrar, veja, eu tenho essa organização com o nome de Rahul E se você estiver nesta página , a primeira coisa a fazer é criar um novo projeto. Então, eu já tenho esse projeto, mas no seu painel, você não verá o nome desse projeto, obviamente. Então, basta clicar em Criar novo projeto. E aqui, dê a ele um nome de projeto. Vou escrever um aplicativo de notas. Em seguida, clique em Avançar. Aqui, o proprietário do projeto cria o projeto. E depois que o projeto é criado, temos que construir um banco de dados. Basta clicar nele. Em seguida, selecione o pneu livre que é zero. Obviamente, mais tarde, você pode optar por servidores e esse tipo de coisa. Então, o provedor é a AWS e a região fica perto de você. Então, basta escolher onde você mora. E você pode dar o nome do seu cluster. Vou apenas deixá-lo padrão. É o cluster zero. E clique em Criar. Com o It's Caps e tudo mais. Motocicleta Depois disso, estamos dando os retoques finais. Depois disso, você precisa criar nome de usuário e senha. Basta lembrar esses detalhes. Eu vou usar uma senha muito simples por enquanto. Eu vou me lembrar disso. Clique em criar um. Então, onde você gostaria de se conectar a partir do ambiente de nuvem, escolha esta opção. E então eu já tenho meu endereço IP. Acabei de adicionar meu endereço IP atual. Então, eu tenho meu IP aqui. E então é só terminar, fechar e ir para Tababase. M. Ok. Agora, a próxima etapa é permitir o acesso de qualquer lugar. Como você pode ver, fornecemos nosso endereço IP, que significa que somente esse sistema estará acessível a esse servidor. Mas queremos que outras pessoas também usem nosso aplicativo na vida real. Acesse o acesso à rede aqui, clique em Adicionar endereço IP e clique em permitir acesso em qualquer lugar. S e depois confirme. Está em um status dependente. Está demorando algum tempo. Estamos implantando suas alterações na ação atual configurando Como você pode dizer, está demorando. Está tudo bem. Vamos dizer isso depois alguns minutos antes de abrir um código VS. E, obviamente, temos que conectar esse nó ao Mongo dV. Para isso, usaremos outro pacote conhecido como Mo. Nesse terminal, vou pará-lo e escrever NPM install Mo e pressionar enter No pacote de serviço que Jason arquivou, você pode ver que o de Mongo está lá E acredito que nosso banco de dados também está configurado. Então, no próximo vídeo, estabeleceremos a conexão entre o NA e esse banco de dados. Obrigada 5. Conecte aplicativo Node ao MongoDB: I. Na próxima etapa, precisaremos de uma string de conexão para conectar nosso aplicativo ao banco de dados Mongo DV Para isso, vá até o último painel e, aqui, clique no botão Conectar ao cluster. Então, aqui, basta clicar em Conectar. Então, há muitas opções. Vou escolher o Mongo DB para o código VS. E então simplesmente copie essa cadeia de conexão. Substituiremos a senha pela nossa própria senha. Abra o código VS e, no servidor, vamos estabelecer uma conexão. Simplesmente, em primeiro lugar, importe o pacote Mongoose Mongoose igual ao requerido Mongoose igual Em seguida, escreva mongoose connect. Aqui temos que dar a corda. Essa é a cadeia de conexão. E simplesmente substitua a senha e também a remova do que simplesmente escrever a senha. Eu dei 12345. E, no final, também escreverei o nome do banco de dados. Isso é Nodes DV. Era só um cluster, e esse é o nome do banco de dados. Nodos DV. E quando a conexão for bem-sucedida, eu acionarei essa função. eu acionarei essa função. Que terá todas as rotas. Isso significa que vou garantir que as rotas sejam acessíveis somente se a conexão for bem-sucedida. Eu simplesmente recorto e colo todas as rotas dentro da conexão do Mongoose E essa maçã estará lá fora. Então, precisamos de uma ferramenta para testar as APIs. Para realizar operações cruas em um servidor ou banco de dados, precisamos de um cliente ou front-end No momento, não temos o aplicativo flutter. Então, para simular ou enviar solicitações falsas, usaremos o Postman para testar a API Então, basta acessar um navegador e escrever postman e aqui, eu já tenho essa configuração, mas certifique-se de criar uma conta e baixar o software Eu tenho esse carteiro aqui já instalado. Muitas rotas anteriores. Aqui, primeiro de tudo, inicie seu servidor novamente. O servidor está em execução. Isso significa que acho que não há erro com o Mongo. Vamos enviar uma solicitação G. Esta é a solicitação Get, e eu escreverei 3.000 notas de barra em HTTP e depois no host local E se eu enviar uma solicitação de GT aqui, veja, esta é a página de notas. Isso significa que nossa resposta está aí e o servidor está funcionando perfeitamente. E esse carteiro é muito necessário. Espero que você o tenha instalado também. Antes de fazer qualquer outra coisa, até agora, sempre que fizermos alguma alteração no código , precisamos parar o servidor e reiniciá-lo novamente. Essa não é uma boa experiência de desenvolvimento. Para resolver isso, usaremos um pacote conhecido como Nudmon. Isso permitirá a atualização ao vivo do servidor. É quando fazemos alterações e as salvamos, ele reiniciará o próprio servidor e refletirá as alterações. Novamente, pare o servidor e escreva NPM install global node M. Então, amarre esse código Instalaremos esse pacote globalmente no sistema para que, em projetos futuros, você não precise instalá-lo repetidamente. Então, basta pressionar enter. Eu já tenho o Node Ml instalado globalmente. Então, isso o instalará em seu sistema. E depois disso, no arquivo JS do pacote, crie um novo script Abaixo do início, basta escrever D e escrever o script nodemon server do chase Isso ocorre somente na fase de desenvolvimento. No servidor ativo, ele automaticamente perseguirá o servidor de nós. Salve isso. De agora em diante, escreveremos NPM run Dv e veremos o servidor Nod Mon ser iniciado Isso significa que, a partir de agora, a experiência de desenvolvimento será um pouco melhor. É isso para este vídeo. No próximo vídeo, começaremos a trabalhar na criação de modelos para nosso. Obrigada. 6. Criando modelo de Anotação: Oi Bem vindo de volta. Portanto, antes de prosseguir, gostaria de estruturar nosso projeto em arquivos e pastas de forma organizada. Então, primeiro de tudo, vou parar o servidor. Em seguida, dentro da pasta de back-end, criarei uma nova pasta chamada SRC E mova o arquivo JS de pontos do servidor dentro da pasta*** Agora eu tenho que fazer algumas alterações no pacote do arquivo SN também Aqui. Quando eu estiver fazendo o script de inicialização, escreverei o código-fonte do servidor sla do JS e também no nodemon Isso também é script em D porque o arquivo não está no diretório raiz. Então é isso. Agora, vamos criar alguns modelos. Para nossos dados de nós. Os modelos são a estrutura de qualquer dado em nosso aplicativo. Salvaremos essa estrutura de dados em nosso banco de dados Mongo DB Mongoose ajudará a salvar os dados e a criar modelos Além disso, podemos usar esse modelo para realizar operações de multidões no banco de dados. Então, tudo isso está conectado ao pacote Mongoose. Portanto, você deve saber o básico disso. Dentro de como pasta, crie uma nova pasta e nomeie-a como modelos. Dentro do modelo, crie um novo arquivo JS. Note que Js são assim. Ok. Agora, há algumas etapas para criar um modelo. O primeiro passo é exigir o pacote de mangusto. Em primeiro lugar, vamos exigir o pacote mangoose. Em seguida, temos que definir o esquema. Esses são os detalhes dos dados. Nos dados do nosso nó, ele terá um conteúdo de título de ID como este. Quais são os preenchimentos armazenados nesses dados? Vamos criar um esquema const igual ao esquema Mongo Aqui, temos o parêntese. O primeiro preenchimento será ID e agora discute as propriedades Digite, será string, exclusivo será verdadeiro, ou seja, todo o ID deve ser exclusivo e obrigatório. Ou seja, esse campo é obrigatório, não pode ser deixado vazio no banco de dados. Em seguida, o próximo será o ID do usuário, o tipo será st e re é verdadeiro. Porque, obviamente, o usuário pode ter vários nós, então o ID do usuário não pode ser exclusivo. Em seguida, o título que é o título do nó tipo string re, então ele terá o tipo de conteúdo string. Isso é, não é necessário. Finalmente, adicionamos. Seu tipo será. Assim, o padrão será o ensinado agora. Se nenhum dado for fornecido, o padrão estará lá. Então, importamos os Mongos. Definimos um esquema. Agora temos que criar o modelo. Para isso, precisamos fornecer um nome de modelo e um esquema. Então, basta escrever o modelo de pontos Mongos. O nome do modelo será Node e o esquema será note schema A etapa final é exportar o modelo. Simplesmente no início desse modelo, as exportações do módulo de gravação são iguais ao modelo Mongoose Como você pode ver, esse é o modelo Node de código de quatro horas. Então, espero que você tenha entendido tão bem quanto conhece os conceitos. Porque, obviamente, esse é o conceito do pacote Mongo e do Mongo DB também Então é isso. Nos próximos vídeos, também criaremos algumas novas rotas. Obrigada 7. Rota para adicionar nota: Olá, vamos usar o modelo de notas para buscar todas as notas no banco de dados e enviá-las como uma resposta JCN Portanto, no arquivo JS do servidor, alterarei essas notas de barra para sns do list E aqui vou escrever R. Logo no início, no topo, tenho que exigir o modelo. Apenas escreve que o nó é igual ao nó re modela. Então, aqui vou escrever que nós são iguais a um nó fino. Isso significa obter todos os nós do banco de dados, e é uma função síncrona, então temos que fazer com que seja uma sincronização E então, na resposta, vou apenas enviar Res JS e notas. Não estou colocando essas notas em nenhum parêntese porque elas estarão automaticamente no formato JCN Vou salvá-lo e executar o servidor. E se eu for até esse ponto final, isso é a lista de notas. Então veja que estou recebendo uma matriz vazia. Isso significa que não há notas inseridas, obviamente, mas não há erro. Agora, vamos criar uma rota para adicionar uma nota. Abaixo dessa lista de rotas, crie uma rota GT para agora app.gs notes ad Será uma função de sincronização. Solicite uma resposta. Agora, temos que criar uma instância do modelo de nó. Então, para esse novo nó, é igual à nova instância do nó. Como você sabe quais dados são testados, será necessário um ID. Vou codificar os dados por enquanto. Posteriormente, alteraremos essa rota para uma postagem e uma leitura do usuário. Vou apenas escrever 0001, então o ID do usuário será rahle atmail.com, então o título será o primeiro a minha nota e o conteúdo será, este é o conteúdo então o ID do usuário será rahle atmail.com, então o título será o primeiro a minha nota e o conteúdo será, este é o conteúdo. Quando temos essa instância de nó com os dados, precisamos salvar os dados do modelo no banco de dados. E isso é muito simples. Basta usar essa nova variável de nota e digitar salvar. É isso mesmo. Esse código salvará esses dados no banco de dados. Então, como você pode ver, o Mongo torna isso muito fácil. Em seguida, crie uma variável de resposta no formato CN e eu enviarei uma mensagem que o novo nó foi criado. No final, escreverei Response No Jason e enviarei essa variável de resposta assim É isso mesmo. Salve isso. Agora, vamos testar essa API. O ponto final da APA é um nó e um nó. Mensagem Lash ad C, uma nova nota é criada, e eu vou, se eu for e agora escrever lista L, vamos ver acho que porque eu sei qual é o erro Sim. Eu tenho que mudar essas coisas. Agora, se eu for e listar, veja, eu tenho isso, no qual inseri o ID, o título do ID do usuário. Porque não era único, então estava dando um erro. De qualquer forma, não seremos valores de código rígido como esses. Mas, como você pode ver, os dados são inseridos. Se eu adicionar isso também, e depois com o terceiro ID, usarei um ID de usuário diferente, John, e essa será sua primeira nota fictícia como essa, e se ele escrever adicionar também, nesse caso, se eu for escrever uma lista, todas as três notas estarão lá Ou seja, Johns e eu acho que Johns têm três, quatro k. Obviamente, o último Como eu disse, esse anúncio publicitário tem algo que, quando estamos, talvez eu tenha inserido duas vezes Essa é a questão. Mas está tudo bem. A API está funcionando perfeitamente. Portanto, no próximo vídeo, trabalharemos na rota para obter notas apenas por ID de usuário. Obviamente, não queremos essa lista em que todas as notas de todos os usuários sejam buscadas Não quero que outros usuários vejam a postagem uns dos outros. Além disso, posso ver que tenho esse tipo de ácaro, está tudo bem. Apenas salve-o. E isso é tudo para este vídeo. Obrigada 8. Obter notas por ID de usuário: Oi. Bem vindo de volta. Então, como você pode ver, podemos buscar todas as notas na rota da lista de nós de barra Mas, obviamente , queremos que o usuário possa ver seus próprios dados no aplicativo. Para isso, passaremos o ID do usuário como parâmetro ao chamar a rota. Então, vamos mudar essa rota que está depois dessa lista, vou aceitar uma variável de ID de usuário. Isso significa que, ao ligar para essa rota, a pessoa precisa enviar esses dados. E então vou usar esses dados para filtrar a descoberta. Ou seja, vou apenas filtrar onde ID do usuário é igual à solicitação que os PMs façam o ID do usuário Ou seja, isso é um parâmetro, ou seja, PMs. Dessa forma, somente os nós desse usuário em particular serão mostrados. Então, vamos testá-lo. Sim, vou usar o Postman para isso. Agora, vou escrever rah no gmail.com. Essa é uma ID de usuário. Eu tenho essa solicitação de GAT Se eu enviar, vejo apenas os dois dados que os meus estão mostrando agora. Então isso significa que isso está funcionando perfeitamente. A próxima coisa que precisamos fazer é instalar um pacote porque, quando enviamos dados via solicitação de postagem, nosso servidor de nós não conseguirá entendê-los por padrão. Ou seja, suponha que aqui quando fizermos as solicitações de postagem e no corpo, enviaremos os dados do nó porque, obviamente, aqui estamos apenas codificando os dados do nó, mas, posteriormente, solicitaremos essas informações ao usuário E nesse caso, temos que garantir que nosso servidor seja capaz de entender esses dados. Para isso, usaremos o pacote body passer. Então, vou usar o Control C para parar meu servidor e escrever NPM install body passer assim Ele converterá os dados do JC, que enviaremos do front-end e os tornará legíveis pelo nosso servidor É isso mesmo. E para fazer isso funcionar. Temos que usá-lo como um middleware. Aqui no topo. Em primeiro lugar, vou importar se o analisador de corpo é igual a require e, em seguida, o analisador de corpo Depois disso, eu tenho que escrever o URL do aplicativo e do pacote corporal codificado, estendido é igual a falso, e então eu tenho que usar o analisador app dot use body Aqui, estendido é falso. Uma vez que não enviaremos nenhum dado aninhado no corpo. A chave não terá nenhum dado JCN como valor. Ou seja, como você pode ver aqui, todos os dados, todos os valores, são apenas strings simples Mas suponha que tenhamos algum tipo de tag, e será uma matriz de strings. Nesse caso, você precisa torná-lo verdadeiro, estendido. Então, como você pode ver, essa linha, basta fazer com que ela apenas converta os dados JN para serem legíveis Agora, vamos trabalhar em nossa rota de adição de notas. Anteriormente, criamos uma rota para adicionar uma nota, mas ela estava apenas armazenando dados fictícios como esses Agora, vamos trabalhar nisso para que possamos recuperar dados do corpo da solicitação, que é essa, e armazená-la no banco Em primeiro lugar, temos que fazer disso uma solicitação de postagem, em vez de E lembre-se, essas solicitações de postagem não podem ser testadas no navegador. Então, usaremos o postman a partir de agora até construirmos um front-end Agora, aqui, em vez de codificar, solicitarei o ID do ponto corpo do ponto Ou seja, os dados estarão no formato JCN e o ID será sua chave Vou usar isso apenas para imprimir o valor. Da mesma forma, o ID do usuário será o corpo do ponto da solicitação. Faça com que seja grande. Solicite o ID do usuário. Vou solicitar o título do ponto, corpo do ponto. E o conteúdo será o conteúdo do corpo do ponto solicitado. Ok. Fora isso, acho que não. Este é o s. E eu vou aqui apenas escrever a mensagem com a interpolação de strings Novo nó criado com ID e, em seguida, simplesmente escreverei o ID de ponto do terceiro corpo da solicitação. Só essa é a resposta. Eu quero Sy. Então, vamos iniciar nosso servidor novamente. E agora teste. Aqui, em primeiro lugar, a rota é adicionada. Lembre-se, esta será uma rota postal. Agora, para enviar dados corporais, primeiro clique nesse corpo e depois em Raw e certifique-se de inserir o texto, você escreve JS porque enviaremos Jsta você escreve JS porque enviaremos Jsta Aqui, vamos escrever que o ID será 005. Porque há quatro notas no momento. Eu sei disso. O ID do usuário será enviado. O título será Hard the My note. E o conteúdo será Este é o conteúdo. Agora, vamos tentar. Vamos apenas publicá-lo e ver um novo nó criado com o ID 005. E isso é 005, eu esqueci. Pode ser zero, mas está tudo bem. Se eu for, se eu escrever uma lista e depois escrever para gmail.com, receberemos Então você pode ver o mais recente aqui. E se eu também for ao banco de dados e atualizá-lo , você pode ver 001-00-2003, todos os dados estão lá. Vamos ver se consigo mudar mais esse 210 e atualizar. É isso aí, 005. E se eu fizer isso de novo, veja. Posso simplesmente listar apenas as notas de R, dá uma ideia. Então é isso. Para este vídeo, nos vemos no próximo vídeo. Obrigada 9. Rota para atualização e exclusão: Oi, bem vindo de volta. Agora é hora de criarmos também uma rota para atualizar uma nota. Então, abaixo está adicionar rota. Escreva o aplicativo Tot. E como se trata de atualização, usaremos put Esta é uma solicitação de atualização no STP, e eu darei o nome da rota em notas Será a função de sincronização, que dará resposta à solicitação. Ok. Agora, a maneira como fazemos isso é escrever que nota de atualização R é igual ao peso do ponto do nosso modelo de nota. Desta vez, escreveremos not find, escreveremos bem e veremos, substituímos, removeremos, excluiremos e usaremos a atualização desta forma. E agora, aqui, a maneira como fazemos é primeiro escrever a condição entre parênteses ou A condição é que a ID seja igual à ID do ponto, corpo do ponto da solicitação. Então, enviaremos a identificação pelo corpo. Então, o que queremos atualizar? Queremos atualizar o campo de título para o título do ponto b ponto da solicitação de valor e o campo de conteúdo para o conteúdo do ponto do corpo do ponto da solicitação de valor. Então essa é a condição são os campos que queremos atualizar e para quais dados e o último, escreveremos que neu é igual a verdadeiro Isso significa que essa consulta retorna os dados. Se não escrevermos que neu é igual a verdadeiro, ele retornará os dados anteriores, não os dados atualizados Por isso, ele simplesmente retorna os dados atualizados, que serão armazenados nessa variável de atualização. Então, lembre-se disso, encontre um e atualize. Essa é a maneira de fazer isso e retorna os dados atualizados. Agora, depois disso, criaremos uma variável de resposta. Aqui, escreveremos uma mensagem que a nota foi atualizada com o ID. E o ID será o ID do corpo do ponto da solicitação. Em seguida, também enviaremos os dados da nota que são uma nota de atualização atualizada como esta. Isso significa que também estamos retornando os dados. Para ver isso no console. É isso mesmo. Nada mais. Restaure o Json, que é ponto de resposta Jason, e enviaremos a variável de resposta, assim Vamos testá-lo, como você pode ver aqui. No ID cinco. Vou atualizar os dados. Aqui. Será O nome da rota é a data das notas da lista. Deve ser colocado. Lembrar. O ID é o título 005 Este é o meu conteúdo assim. Eu não quero mudar nenhuma outra coisa. Eu vou e vamos ver o que aconteceu. que houve algum erro, Creio que houve algum erro, mas por quê? Não. Eu não mudei. Eu deixei eu verificar novamente. Notas, atualização. Em seguida, encontrei um e atualizei o ID do corpo solicitado. E a identificação está aqui. Ok, a identificação estava errada, obviamente. Eu mudo isso. Agora, se eu escrever put C, este é meu conteúdo atualizado. E se eu for ao banco de dados e atualizá-lo, você pode dizer que este é meu conteúdo atualizado Outros detalhes permanecerão os mesmos. Ok. Portanto, a rota de atualização também está funcionando. Agora, a próxima rota que queremos é a rota diária. Para atualizar, usamos a solicitação put route put. Aqui, usaremos essa exclusão. Isso é uma exclusão de pontos. Aqui você pode ver que temos Abdo get post Put and delete. A rota será composta por notas, exclusão e , em seguida, um toque de sincronização Solicite uma resposta. A consulta será excluída. A nota é igual a um peso. Observe que exclua um. Então, aqui vou usar delete one porque, obviamente, estou apenas excluindo um, e a condição será ID sho ser igual à solicitação ponto por Em seguida, criarei uma resposta escreverei uma mensagem igual a Nota foi excluída com ID. Em seguida, você solicitará o body dot ID. E lembre-se aqui, ele não fornecerá os dados. Ele apenas escreverá, se exclusão estiver concluída, algo assim. Você verá na resposta, mas isso não retorna os dados excluídos dessa forma. Em seguida, escreverei a resposta que o ponto C tem. Vou escrever um ponteiro aqui. Salvar. Agora vamos testar essa rota também. E agora vou deletar a rota atualizada. Essa. Vou usar delete, primeiro aqui, depois alterarei o nome da rota para delete. E aqui, eu não preciso enviar todas essas coisas. Só se eu enviar um documento de identidade , tudo bem. Se eu enviar todos esses dados , tudo bem. Então, vou apenas escrever o n e ver que a nota foi excluída, confirmei que T excluiu a contagem um Então essa foi a resposta do servidor. E se eu for lá e voltar, então isso estará lá. Isso não deveria estar no banco de dados. Vamos atualizá-lo. Vamos ver se 005 está lá ou não S. O último é 00004. Esse é o último. Portanto, todas as nossas rotas foram escritas e estão funcionando perfeitamente. No próximo vídeo, vamos apenas organizar nossas rotas de uma certa maneira. Obrigada 10. Organize nossas rotas: Oi. Escrevemos todas as nossas rotas no arquivo JS do servidor. Se você quiser, você pode fazer isso, mas eu gosto de torná-lo mais organizado. Já que em aplicativos maiores, você terá muito mais rotas para percorrer. Como você pode ver, temos quatro rotas para gerenciar nós. Esses são esses quatro. Então, vamos separá-los em um arquivo diferente. Eu não estou falando sobre essa rota. Estou falando sobre essas quatro rotas. Então, vamos superar o servidor primeiro. Dentro da pasta asserts, crie uma nova pasta route e dentro dela, crie um novo arquivo Node toc. Ou seja, esse será o nó da rota. Aqui, em primeiro lugar, inp express é igual a require Express, então aqui, usaremos o roteador da biblioteca Express, é um roteador Express como este e certifique-se de exportar esse roteador para que possamos importá-lo no arquivo JS do servidor posteriormente Depois disso, vá para Servidores Aqui, arquivo JS do servidor. E corte todas as quatro rotas , exceto a rota de casa. Aqui, a partir do aplicativo dot, coloque e exclua este post, recorte, acesse essas rotas aqui e simplesmente cole assim Agora, em vez desse app.gg, usaremos E lembre-se também de importar o modelo do nó. Portanto, esse nó constante correto é igual a require. Isso estará fora dos modelos, observe como esta, e aqui basta escrever o roteador Aqui também. Como você pode dizer que este é o nosso próprio arquivo de roteador. Ou seja, estamos usando esse roteador expresso. E você pode remover as notas de barra do nome do roteador. Porque isso é comum em todas as quatro rotas. Usaremos isso no servidor, o arquivo JS, para conectá-lo às nossas próprias rotas. Você entenderá que, em primeiro lugar, basta remover as rotas que a barra indica aqui também E aqui também, salve-o. Agora, finalmente, diga ao servidor o arquivo JS use as rotas que estão escritas no arquivo separado. Aqui, em primeiro lugar, arquivo de rota mp. Aqui vamos importá-lo aqui. O roteador C Note é necessário. Desculpe, essa deve ser a nota de barra de rotas E então eu vou usá-lo apenas como um aplicativo de middleware, por exemplo, uma solicitação que contém notas de barra, e o roteador de nós como este. e o roteador de nós Então, se você entender isso, ele anexará as rotas automaticamente Isso é um anúncio de barra de notas de barra ou atualização de barra de notas de barra Portanto, qualquer solicitação que chegue a isso, ou seja, ela tem notas de barra Ele detectará e, em seguida , veremos, adicionaremos uma chamada, atualizaremos esta chamada ou excluiremos esta chamada desta forma. Essa é uma maneira mais limpa. Além disso. Não é importante, mas como todos os dados estão chegando no JCN, também ouvirei Sen responder à mensagem do JCN, vou apenas escrever A API está funcionando assim. E, obviamente, agora eu não uso esses comentários. Eu sei quais são os pedidos. Eu sei o que é resposta. Então, se eu tiver que testá-lo, vou apenas escrever terminal e P. Es list s mail.com Será uma solicitação Get. Vamos ver e ver. As rotas também estão funcionando agora. Eu tenho duas rotas aqui. Eu tenho duas notas. S. E se eu escrever John, então, eu tenho todas as notas de John que são três e quatro. Então, nosso servidor está completo. No próximo vídeo, implantaremos esse servidor no aplicativo ferroviário para que ele fique ativo. Obrigada. 11. Push código para o Github: Oi. Nosso back-end está completo. Agora é hora de implantá-lo da casa local para um servidor remoto que todos possam acessá-lo. Usaremos a plataforma ferroviária para a implantação em vez da Heroku, já que ela não exige cartão de crédito para começar Antes disso, vamos fazer uma pequena alteração em nosso código. Temos que trocar o pote. Como temos o pote fornecido, temos que usar o pote fornecido pela ferrovia na variável de ambiente em vez de um pote estático. Aqui, basta escrever a constante put two process Env pot e, se não estiver lá, basta usar 3.000 E aqui colocado assim. Portanto, este é o único código necessário e aqui eu posso usar, posso simplesmente usar isso assim. Ok, a configuração está feita, posso simplesmente parar o servidor por enquanto. Para implantar código, eu acho, estamos usando ferrovia, renderização ou qualquer outra plataforma. Primeiro, temos que enviar nosso código para o Github. Então vá para sua conta do Github , faça login na sua conta Getab e você terá que criar um novo Basta escrever um novo, então eu o chamarei de API do aplicativo de notas e, em seguida, o tornarei público. Você pode remover o arquivo leia-me e clicar em Criar repositório três E depois disso, temos que inicializar o Git em nosso projeto. Aqui, basta escrever Git nele, depois escrever Git add dot escrever get commit com Estou apenas escrevendo o primeiro commit Em seguida, pegue a filial principal. Espero que você conheça o código G. Ou seja, essas são apenas linhas de obtenção, e você também pode ver todas essas linhas aqui. Depois, basta copiar e colar e , finalmente, obter origin main. Assim. S. Vamos verificar se nosso código foi enviado ou não. Vou apenas atualizá-lo. E veja. Temos o código de back-end aqui, então, modelos, es. Tudo está lá. Além disso, eu também instalei esses módulos de nós, mas não é necessário , pois você pode ignorar esses módulos de nós, bem como qualquer arquivo NV de pontos Então, na primeira etapa do próximo vídeo, faremos login na ferrovia e implantaremos nosso servidor lá. Obrigada. 12. Implante seu repositório: Olá. Agora, vamos ao aplicativo Railway Dot. É um aplicativo ferroviário certo como este, apresentador. Você pode ver, traga seu código. Nós cuidaremos do resto, todas essas coisas. Então essa é a plataforma ferroviária. Eu gosto muito disso. Você também pode criar banco de dados. Além de fazer o upload de qualquer código de serviço. Basta clicar em Entrar. Faça login com o Github. E veja. E porque eu já entrei com minha conta do guitub Acho que é por isso que enviado diretamente para cá sem pedir autenticação. Mas, definitivamente, você precisará se autenticar por meio de sua conta do guitab Depois de fazer login aqui, basta criar um novo projeto. Então você pode ver que há muitas opções de implantação a partir do Gitab po, implantação de um modelo estático Você também pode criar banco de dados aqui, pois veja que você pode usar o Mongo DB aqui Em seguida, você pode usar esse link no seu servidor se não estiver usando o Atlas. Então, depende de você. Vou apenas implantar a partir do Github po. Então eu já me autentiquei com meu Github. Mas você pode não ver todas essas coisas. Você tem que configurar o aplicativo Github e coisas assim. Então você pode simplesmente clicar nele e simplesmente digitar uma senha. Então, aqui, vou usar essa API de notas. Além disso, lembro que você tem a opção de autorizar o acesso a todos os repositórios ou a alguns Então, eu dei todos os repositórios porque depende de você. Clique nas notas, API. Então, se você tiver alguma variável de ambiente, poderá adicioná-la aqui ou posteriormente. Mas vou clicar em implantar agora. Então, isso será feito em alguns segundos. Mas, como você pode ver, é muito fácil implantar nosso servidor. Você não precisa fazer muita configuração e agora pode ver que isso é um sucesso. A última coisa que precisamos fazer é criar um domínio. Esse é o endpoint da nossa API, que pode ser usada pelo cliente para acessar esse servidor Obviamente, precisamos de algum tipo de URL. Acesse as configurações aqui. Basta clicar em gerar domínio. Ele está gerando o URL da API do nosso servidor e C. Podemos ver nossa API. E se eu clicar, se eu clicar nele , agora nossa rota inicial está mostrando o resultado. É a API que está funcionando. Como você se lembra, essa era a rota de casa. Agora, vamos testar essa APA no Postman também. Vou apenas copiá-lo. Traga o carteiro Aqui. Em vez desse host local, usarei o Notes. No começo, eu tenho que escrever HTTPS e depois coluna. Agora, pegue tudo para Ravel, envie e veja, temos as rotas aqui Agora, se eu tentar adicionar uma rota e postar nela, acho que essa foi excluída e esse é o conteúdo. Acho que 005 não está lá. Vamos publicá-lo. S, novo nó criado. E agora ilist@gmail.com e pegue, dê a solicitação Get. Então, posso ver os dados mais recentes do meu nó aqui. Isso significa que nossa API foi implantada com sucesso e está funcionando perfeitamente Então, todo o código do lado do servidor está pronto. No próximo vídeo, começaremos a trabalhar em nosso aplicativo de vibração. Obrigado. 13. Crie um projeto de flutter: Olá, bem-vindo de volta a um novo vídeo. Agora é hora de trabalharmos em nosso front-end. A primeira coisa a fazer é criar um novo projeto de vibração. Estou assumindo que você já instalou o sistema Flutter S Agora, como você pode ver, já temos esse back-end. Agora, aqui, que está no aplicativo Notes, abra um terminal. Abra um terminal. E certifique-se de ter o flutter instalado. S. Quando escrevo a versão flutter, posso ver a versão Flutter Agora aqui, eu abri o terminal aqui porque já criamos o desenvolvimento de back-end nesta pasta. Aqui vou apenas escrever uma carta, criar um front-end como este. Vamos criá-lo. Você pode usar qualquer nome de projeto ou qualquer local. Eu simplesmente prefiro que seja assim. E depois disso, você pode ver o front-end aqui, excluirei a pasta Windows Windows, depois a web, depois o Linux, depois o macOS e depois testarei Já que eu não vou construir para essas plataformas. Agora abra esse projeto em código. Como esse front-end. Não execute o aplicativo agora. Vou simplesmente alterar o nome do aplicativo neste arquivo de manifesto principal do Android. Espero que você saiba que aqui, vou apenas escrever um aplicativo de notas. Portanto, sempre que você criar esse aplicativo em seu celular, o nome do aplicativo será aplicativo Notes em vez de front-end. E você também pode torná-lo capital, você também pode dar espaço. Depende de você. Esse era só o nome. Agora. Vamos criar uma página inicial porque, obviamente, eu sei que não vou usar esse código fictício Dentro do ib, crie uma pasta conhecida como páginas e, dentro dela, crie o ponto ponto da página inicial. Agora, criaremos um orçamento estadual completo para tela inicial com uma barra de aplicativos e um botão de ação flutuante por enquanto. Em primeiro lugar, importe o pacote de material e, em seguida, crie um widget de estado completo, chame-o de página inicial Então, aqui, vou devolver um andaime e depois o aplicativo. Todos esses são widgets de vibração. Suponho que você tenha o conhecimento básico de flutter. O aplicativo de notas de texto Em seguida, o título centralizado é igual a verdadeiro. Depois da barra a, basta escrever o botão de ação flutuante e, em seguida, o botão de ação flutuante aqui ao pressionar, deixe-o vazio por enquanto e adicione os ícones do ícone const infantil adicione os ícones do ícone const Assim, salve-o. Em seguida, no arquivo d principal, remova essa página inicial fictícia Esse é o padrão. Em seguida, também removerei esses comentários. Estou apenas escrevendo notas vibrantes. E aqui em casa. Vou escrever a página inicial. Ok, guarde. Agora, vou começar o emulador Pixel five. Você pode usar o emulador ou também pode conectar seu próprio dispositivo real, ou também pode conectar porque eu sei que esse estúdio Android é um grande software e também pode atrasar seu sistema Depois disso, basta executar e iniciar a depuração. Vai levar tempo, espere. Mas já sabemos que nosso servidor, ou seja, o back-end, está funcionando perfeitamente. Apenas conectá-lo ao front-end é relativamente fácil porque a maior parte da lógica principal estava no lado do servidor. Estará lá. Então, se eu ver este aplicativo ferroviário, certifique-se de aprender mais sobre essa plataforma ferroviária, porque definitivamente é muito útil. Você tem tantas coisas que são produção, desenvolvimento, você também pode fornecer ambientes. Porque com a prática, você entenderá e garantirá que esse plano inicial tenha um limite. Mas, obviamente, quando você é iniciante, não conseguirá esgotar esse limite porque isso é apenas para fins de teste Você pode implantá-lo e mostrar seus projetos aos empregadores. Depende de você. OK. Então, aqui eu acredito que o servidor está funcionando e veja, temos o aplicativo de notas. Vou apenas remover esse banner de depuração. Os banners de depuração do programa caem. OK. Então é isso para este vídeo. S nos próximos vídeos. Obrigada. 14. Criar modelo de Anotação: Em nosso aplicativo, lidaremos com dados de nós. É muito importante ter um modelo para isso. Usamos modelos para fornecer uma estrutura predefinida aos nossos dados em vez de apenas usá-los todos os lugares como pares de valores-chave de estação Então, dentro da Lib, crie uma pasta chamada models e, dentro dela, crie um novo arquivo de pontos Note dot dart Agora, criaremos uma classe de modelo para o node. E isso terá todas as propriedades, que já definimos no esquema Mongo DV Node, ou seja, esse arquivo JS Aqui, basta começar com o ID da string. ID do usuário da string título da string desculpe, i string title. O conteúdo da string Datet adicionado cria um construtor Observe que está certo. Esse ID de ponto, esse ID de usuário, esse título, esse conteúdo e esse ponto adicionado. Você pode acessar o esquema do nó e ver que também temos essas propriedades lá Agora, vamos trabalhar na serialização da JCN. Vamos criar o punchon para converter dados JCN provenientes do banco de dados para esse objeto de nó, bem como desse objeto para o formato JS, que é entendido pelo servidor Então, aqui está simplesmente certo. Fábrica. Observe que, a partir de um mapa como esse, enviaremos dados do mapa, que serão um mapa dinâmico em sequência de caracteres e retornarão um objeto de nota. Aqui temos que passar valores ID do mapa ID. Portanto, certifique-se de que essas teclas sejam iguais às do DV. Ou seja, se você quiser saber, estou falando sobre essas chaves aqui. O ID do usuário dá título a essas chaves. Isso também é mencionado em nosso esquema. Eu só não quero que você cometa nenhum erro tolo aqui. ID do usuário Mapeie a ID do usuário. Mapa do título, este será o título. Mapa de conteúdo. Conteúdo. Data adicionada. Lembre-se de que, se escrevermos a data adicionada dessa forma, não funcionará porque estará no formato adjacente de string ou sequência, mas queremos o formato de data e hora Vamos escrever, ou seja, vamos colá-lo. Analisaremos essa data no formato de data e hora e tentaremos paase para que ela retorne null em caso de exceção em vez de erro Ou seja, se por engano a data não estiver lá, ela simplesmente retornará nula Isso não gerará nenhuma exceção ou você pode dizer pare nosso aplicativo. E, como você pode dizer, esse é um rótulo nulo. Pelo menos estaremos seguros dessa forma. Pelo menos o aplicativo não falhará. Dessa forma, os dados são convertidos do JCN para esse objeto e agora criam outra função Que isso retornará um mapa de string, mapa dinâmico de dois, e isso retornará um mapa. Ele terá ID como ID ID do usuário como ID do usuário, título como título e , em seguida, a data de adição. Agora, a data adicionada, que enviaremos, estará no formato de data e hora, mas agora precisamos convertê-la novamente para o formato de string, que é entendido pelo banco de dados. Então, basta escrever adicionado e convertê-lo em 2i86 01 string. Portanto, lembre-se de que estamos novamente convertendo em string a partir da data e hora Esse é um conceito simples. Então, esses são os dados da nossa nota. Apenas salve tudo. E antes de prosseguir, gostaria de primeiro interromper o aplicativo. E vou instalar algumas dependências. Usaremos o provedor como gerenciamento de estado em nosso aplicativo. O outro pacote será o UUID para criar IDs exclusivos para nosso Em seguida, precisamos do pacote SDTP para chamar a API. Portanto, você pode acessar o site pub dot, pesquisá-los e colá-los na seção de dependências do arquivo doML do pups ou, no comando, simplesmente Pub add UUI, você pode simplesmente começar com provedor UUID e HTTP e Então, isso instalará tudo. Vamos ver se há algum erro ou não. No arquivo pups dot Yamal, você pode ver que temos o provedor UUID Então é isso para este vídeo. Obrigada. 15. Interface de usuário da home page: Oi Vamos executar nosso aplicativo novamente. Neste vídeo, trabalharemos na interface de usuário da página inicial. Nesta página, exibiremos todas as notas desse usuário. Primeiro, vamos criar uma interface básica. Aqui, temos a barra a, temos o botão de ação flutuante. No corpo, vamos começar com uma área segura e rígida. Assim, se houver algum entalhe ou algo relacionado ao dispositivo, ele estará na zona segura Em seguida, usaremos o construtor de pontos de visualização em grade. Então, se você quiser, você pode usar a visualização em lista. Mas aqui, já que é uma nota, a visualização em grade ficará melhor. Então, aqui no delegado da grade, você tem que escrever const sliver grid delegate com fixa de eixos cruzados Eu sei que é muito confuso, mas aqui simplesmente escreva também. E esse código simplesmente significa isso na tela. Teremos apenas dois elementos na horizontal. Então você verá quando tivermos esse UR pronto. Então, como você sabe, na lista, também temos a contagem de itens. Agora, vou usar apenas uma contagem fictícia. Há cinco, então no construtor de itens. Escreva o contexto e o índice. Aqui, retornarei que a cor do contêiner será cor azul pontilhada por enquanto e a margem será contornada nos conjuntos dos cinco. E ponto e vírgula aqui. Reinicie ou você pode salvá-lo. E veja. Essa é a visualização em grade e há apenas dois elementos na horizontal ou em uma linha. Então, se você der três, isso acabará, mas obviamente não ficará bem porque é um dispositivo móvel. Tem um pequeno Então esta é apenas a interface do usuário. Agora, obviamente, precisaremos uma página na qual o usuário possa adicionar notas. Dentro das páginas, crie um novo arquivo, adicione uma nova nota ao dardo Mapeie o material e, em seguida, crie um widget de estado e adicione uma nova nota. Ok. Aqui, simplesmente dê um andaime. Um bar. Deixe isso por enquanto. No corpo, tenha uma área segura e, dentro da área segura, tenha uma coluna. E as crianças simplesmente o deixam vazio por enquanto. Ok. Navegue até esta página de adicionar novas notas na página inicial Temos esse botão de ação flutuante na página inicial aqui. Basta escrever, navegar pelo contexto enviar o caminho da página de material. Em seguida, no construtor, contextualize aqui e adicione uma nova nota. Ok. E eu simplesmente darei uma nova propriedade a ela. Há um diálogo em tela cheia para dois. Portanto, isso é simplesmente uma propriedade da rota da página de material. Se você não quiser, você também pode remover isso. Então, o que ele faz é que, se eu clicar em mais , ele terá essa cruz em vez de uma seta para trás. Então, é como uma caixa de diálogo em tela cheia em vez de uma página. Essa é a única coisa que esse código faz. Também temos a tela de adicionar novas notas. Trabalharemos na interface do usuário no próximo vídeo. Obrigada 16. Adicione uma IU de Anotação: Vamos trabalhar na página de adição de uma nova nota. Então, aqui precisaremos de campos de texto para que o usuário insira o título e o conteúdo da nota e um botão para salvá-la. Então, primeiro de tudo, vou começar com um controlador de edição de texto. Eu sei que haverá um controlador de título. O controlador é igual ao controlador tex thing. Outro será o controlador de nós. Ou seja, esse será o nó real. Eu tenho os controladores então no corpo. Vamos ter um campo de texto. Dentro da coluna, o controlador será o controlador de título. A decoração será uma decoração de entrada constante no texto, como borda do título , como borda de entrada, nenhuma. Em seguida, após a decoração de entrada. Vamos ter um pouco de estilo. O estilo será um tecido têxtil constante. Vamos definir o tamanho da fonte como. Não será como pool de fontes. OK. E então eu quero foco automático. Foco automático para Pro. Vamos salvá-lo. Se eu for e clicar no anúncio, posso ver que o foco automático está lá e o campo do título está lá Também darei um pouco de preenchimento à coluna. Enrole-o com estofamento e aqui será simétrico, horizontal, 20, vertical Vou apenas salvá-lo e ver. Parece decente. Este é um título, o próximo campo de entrada que é o próximo campo de texto será texto preenchido aqui. O controlador será um controlador de notas. Número máximo de linhas. Vou atribuí-lo como nulo para que o usuário possa pressionar enter e descer , ou seja, ele pode ter várias linhas e, em seguida, o estilo de estilo será constante, têxtil no tamanho 20, depois decoração com decoração de entrada na nota de texto Salve isso. Agora, se eu clicar nele, temos o título, temos a nota. Mas se eu clicar na nota aqui , só ela estará em foco. Se eu clicar em qualquer lugar nessa área restante, ela não estará em foco. Para fazer isso dessa forma, podemos apenas a segunda nota expandida. Expandido assim. E agora, o que acontece é que, se eu voltar e voltar para a tela novamente e clicar em qualquer lugar da tela, agora temos a nota aqui porque ela está ocupando todo o espaço aqui. Porque, obviamente, eu quero que o título seja competitivamente menor do que a nota E se eu clicar em enter , teremos várias linhas. A única coisa que resta é um botão seguro, que fornecerei na barra de aplicativos. Aqui, faça ações e, pressionar, um botão de ícone ficará vazio por enquanto. E então o ícone será o ícone const. A nota dos ícones adiciona cores, ponto verde, tamanho 30. Salve isso. Portanto, esse ícone estará no topo C. Temos o ícone de salvar. Ou ele pode simplesmente salvá-lo ou voltar. E certifique-se de descartar também esses controladores de edição Controlador de edição de texto dot dispose. Observe o controle dot dispose desta forma. Que quando voltarmos e voltarmos à página novamente, haverá uma nova instância dos controladores Então é isso para essa interface de usuário. No próximo vídeo, trabalharemos na criação de um provedor. Obrigada. 17. Criando provedor de notas: Oi, bem vindo de volta. Agora é hora de lidar com os dados. Para isso, precisamos criar um provedor para os novos dados. Então, dentro da pasta Lip, crie um novo provedor de pasta e dentro dela, crie um novo arquivo. Fornecedor de notas dot dot. Então, vamos fazer isso. Em primeiro lugar, importe material para que possamos usar esse provedor de notificação de alterações e, em seguida, importar modelos e não iniciar OK. OK. Agora, vamos criar um provedor de notas de classe que estende o provedor de notificação de alterações. Em seguida, teremos uma variável, que consistirá em uma lista de todos os nós, igual à lista vazia por enquanto. Este ano, buscaremos notas da APA mais tarde. No momento, faremos isso localmente. Em seguida, crie uma função para adicionar uma nota. Ele aceitará uma nota e simplesmente adicionaremos essa nota na variável. E então ligue para notificar os ouvintes desta forma. É um provedor muito simples. Então, espero que você saiba que precisamos registrar nosso provedor no arquivo principal. Aqui, envolva o aplicativo de material com igd e escreva o provedor Então, temos que mencionar os fornecedores. Eu usei vários fornecedores porque suponha que no futuro você queira adicionar mais fornecedores e tudo mais, então você pode fazer isso Usaremos o provedor do notificador de alterações e, em seguida, os contatos, e o nome do nosso provedor é notas Fornecedor como esse. Em seguida, basta salvá-lo. E começamos. Em seguida, vamos criar uma função interna, adicionar uma nova nota, onde criaremos um modelo de nota e enviaremos para a função do provedor. Aqui está simplesmente escrever e adicionar uma nova nota. Agora, primeiro de tudo, verificaremos se o título está lá. controlador de título, o texto Tom está vazio, então mostraremos um mensageiro cuidadoso de contexto, que mostra o widget snag p, snag pow no conteúdo, simplesmente o título não Assim, torne-o constante e a partir daqui simplesmente retorne. Não quero que o código Billow seja executado. Se o título estiver vazio. Então, se não estiver vazio, criarei uma instância de nota que é nova nota, é para nota. E aqui vou passar o ID de dados. Vou usar o pacote UUID para criar IDs exclusivos para simplesmente criar um ID de UU como Portanto, ele criará IDs exclusivos como esse. Então ID do usuário, por enquanto, estou fornecendo alguns dados estáticos. Então, suponha que ajo lag val por enquanto. Isso é só um boneco. Posteriormente, usaremos as preferências compartilhadas. Mas agora, basta testá-lo. O título será o texto do ponto do controlador de título, e o conteúdo será o texto do controlador de notas e o adicionado será um ponto d como este. Esse é o nosso modelo de nodo. Depois disso, simplesmente usaremos o provedor fornecido fora do contexto. Aqui, de qual fornecedor precisamos. Precisamos do provedor de nós Node. E então, como isso está fora da função de fatura, escreveremos Listen, is the falls porque eu não quero que ele ouça nenhuma alteração. Porque se estivesse dentro da construção, então ele pode se rebelar Mas, obviamente, isso está dentro de uma função, e vou chamar a nota de adição e enviar o novo valor da nota desta forma. Em seguida, mostrarei novamente o messenger of context show snag bar snack bar E o conteúdo será adicionado com sucesso. E então vou deixar o Navigator fazer pop assim. E então chame essa função dentro do botão do ícone aqui. Essa. Basta ligar para uma nova nota. Então é isso para este vídeo. No próximo vídeo, trabalharemos. Trabalharemos nesta página inicial no TY. Obrigada. 18. Mostrar notas na página inicial: Oi. Então, agora podemos adicionar novos dados. Então, vamos trabalhar na interface de usuário da nota, que está na página inicial onde mostraremos todas as notas. Antes disso, como o nome do arquivo é provedor de notas, farei com que seja provedor de notas, não nota. E então aqui, serão notas, e então aqui, serão notas. É isso mesmo. Não é algo muito importante, mas é como se o nome do arquivo fosse fornecido pelas notas. Vamos para a página inicial aqui. Então, primeiro de tudo, escreverei para meu provedor. Aqui, o provedor de notas igual ao provedor de contexto e é o provedor de notas. E eu tenho que escrever isso dentro do projeto de lei. Assim. Então, no filho da área segura aqui, primeiro enviarei um texto condicionalmente , se não houver nenhuma nota disponível Aqui, vou apenas escrever notas. O ponto do provedor está vazio. Em seguida, exiba const center. Criança centrada. E no texto, ainda não vou escrever nenhuma nota. Assim, é isso. Para que o usuário observe que não há notas disponíveis e ele possa adicioná-las. Em seguida, na visualização em grade, construtor de pontos. A contagem de itens será notas que as notas do provedor fazem n. Em seguida, no construtor de itens. Em primeiro lugar, terei o modelo de notas e, em seguida, escreverei que a nota atual é igual às notas do provedor de notas e ao índice. Então, obviamente, é uma visualização em grade, nós individuais estarão aqui. Obviamente, isso é do zero ao índice até zero, um, dois assim. Em seguida, no recipiente, remova a cor azul aqui porque era apenas um boneco Em seguida, a margem e a margem inferior direita fornecem alguns contras de preenchimento em todas as dez e, em seguida, fornecem caixa borda decorativa à caixa de decoração Em seguida, a cor da borda será cinza, W dois e depois dentro da caixa, raio da borda da decoração, raio da borda, raio circular, dê dez OK. Em seguida, o filho do contêiner. Temos que sair da decoração da caixa de borda e, aqui, a criança será uma coluna. O alinhamento do eixo cruzado será o alinhamento do eixo cruzado Nas crianças, vamos mostrar no topo o título do nó. Título atual da nota, e não é nulo. Estilo têxtil constante. Espessura da fonte espessura da fonte ponto em negrito tamanho da fonte 20. Em seguida, as linhas máximas fornecem uma, essa é a propriedade desse texto, e então o estouro de texto, ou seja, o estouro , deve ser um eclipse de pontos de transbordamento Isso significa simplesmente peso, mostrarei Antes de tudo, veja todo o código aqui. Então, Max fala um, ou seja, eu só quero que o título esteja em uma linha. Suponha que o título seja muito grande, então eu não quero que seja em duas ou três linhas. Faça uma linha e o texto restante será eclipse Ellipses Isso significa ponto, ponto, ponto, assim. Então, não vai ficar muito ruim. Depois desse texto, forneça algumas obras de tamanho e altura sete. Então eu tenho que escrever a descrição. Novamente, a descrição é um texto com o conteúdo atual da nota. Não é nulo, então o tecido aqui novamente, tamanho, dê 18, cores de cinza, faça 700 Estes são apenas um estilo. Obviamente, você pode criar seus próprios estilos para que tenha uma boa aparência. Depois do estilo dentro do texto, novamente, escreva no máximo 24 linhas aqui desta vez e, em seguida, transborde para overflow eps Agora vamos testá-lo H Acabei de salvar tudo. E agora veja, ainda não há notas. E eu escrevo uma nova nota, minha primeira nota e escrevo. Este é um conteúdo fictício. Vamos torná-lo grande para que excesso de texto funcione e torná-lo elipse Espero que isso funcione. E se eu pressionar salvar ver o node it com sucesso, então esse é um conteúdo fictício e aí está a elipse E se eu conseguir, as linhas máximas são cinco. Vamos ver o que acontece? OK. Aí está o transbordamento. Às quatro. OK. Então, isso parece bom. Temos o título aqui em negrito, temos o texto. E lembre-se, no momento, isso não está salvando no banco de dados. É só no local. Então, se eu atualizá-lo, esses dados desaparecerão. E agora, meu foco é apenas trabalhar no provedor. Posteriormente, conectaremos o serviço de API a esse provedor. Agora, obviamente, podemos adicionar dados. Mas também precisamos criar uma função para atualizar e excluir notas. Vá para as notas fornecidas aqui e abaixo, adicione uma nota, escreverei uma nota nula Isso solicitará os dados do nó. Esse é o nó a ser atualizado. E agora, eu tenho que atualizar esse valor. Em primeiro lugar, dentro desta lista de notas, pois ela será exibida para o usuário. Preciso saber o índice dessa nota aqui nesta lista. Escreverei no índice da nota que é igual ao índice das notas elemento , onde sempre que você encontrar o ID do elemento igual ao nó que está sendo enviado , obtenha o índice. Então, o que quero dizer com isso é que ele percorrerá essa nota e verificará a ID de todas as notas com essa ID. E se conseguir, aqui obteremos o índice que deveria estar na posição dois. Em seguida, escreverei notas que são esse índice de notas da lista e as alterarei para nossa nova nota atualizada e, em seguida, escreverei para notificar os ouvintes Essa é apenas uma lógica básica. Em seguida, obteremos o índice e alteraremos esse valor do índice nessa matriz para essa nova variável de nó. Da mesma forma, faremos algo para a função de nó atrasado. Vou obter o índice desta nota e, em seguida, simplesmente escrever essa lista de notas ou A e, em seguida, remover o anúncio, remover esse índice e notificar a listess Portanto, isso atualizará a interface do usuário. E espero que você tenha entendido que essa atualização e exclusão são temporárias, pois estamos fazendo isso apenas no nível do aplicativo. Então é isso. No próximo vídeo, trabalharemos e também criaremos uma tela para editar uma nota. Obrigada. 19. Trabalhar na página de Editar nota: Oi. Bem-vindo de volta. Neste vídeo, trabalharemos na edição de uma nota. Então, o que eu quero é que, quando o usuário tocar em qualquer nota, ele seja enviado para a página de edição, onde poderá atualizar e excluir o Death Note Então, para isso dentro das páginas, crie um novo arquivo, edite uma nota. Copie e cole todo o código de uma nova nota. E depois disso, faremos algumas mudanças. Copie e cole aqui, altere o nome do widge que é uma nota como esta Então, como isso editará uma nota, temos que aceitar os dados da nota no construtor Aqui, vou escrever a nota final. Observe que esse será um parâmetro obrigatório. Então, esta nota. Em seguida, atribuirei os valores de nota a esse controlador de edição de texto. Aqui em seu estado, escreverei que o texto do controlador de título é igual ao título do widget e sei que isso não é nulo e, semelhante, t é igual à nota do widget, não ao Então eu espero que você tenha entendido isso. Suponha que exista esse título, meu primeiro nó, minha primeira nota. Então, sempre que formos para a página de edição, ela já estará preenchida dentro do campo de texto. E depois podemos editá-lo. Agora, não precisamos dessa função de adicionar novas notas. Aqui, vamos criar uma função para atualizar uma nota. Vídeo Então, se o texto do controlador de título do trim estiver vazio da mesma forma Não vamos permitir isso, então vamos tc messenger of context that snag par E o texto do título não pode ficar vazio, e voltaremos daqui. Isso será constante se tudo estiver bem, o que faremos é qualquer texto atualizado que tenhamos. Vamos atribuir ao nó, que temos no construtor construtor para que não atualizemos os outros Outros preenchimentos significam ID, data do ID do usuário. Essas coisas já estão dentro dessa variável, certo. Dessa forma, não precisamos atualizar isso. Agora, tente entender o que vou fazer é o título do ponto do widget Vou alterá-lo para texto pontilhado do controlador de título, e eu não preciso disso, então wig dot note do content é igual ao texto pontilhado do controlador de notas Em seguida, chamarei o provedor de contexto e, em seguida contexto e, em seguida, a escuta do provedor de notas será falsa, chamarei a função de atualização e enviarei a nota que está no construtor, mas já a atualizamos E suponha que o usuário não altere o conteúdo. Além disso, não precisamos nos preocupar com. Como no construtor, já colocamos dentro do texto o que já estava dentro dessa variável O mesmo será atualizado novamente. É isso mesmo. Em seguida, vou usar essas mensagens e apenas escrever o título atualizado com sucesso. E então vou escrever navigator dot POP Isso também criará um novo botão dentro da barra de aplicativos para excluí-lo Primeiro de tudo, essas notas e, nós podemos fazer isso. Vou mudar o ícone, eles apenas marcam o círculo e atribuem a ele a nota de atualização da função assim, ok? Acima desse botão. Vou criar outro botão que é botão de ícone. O ícone será ícone de ícone, adie as cores vermelhas. Ao pressionar, o que eu quero é simplesmente chamar a função provedora de notas de contexto fornecida pela nota de atraso e enviar uma nota de ponto do widget como esta Além disso, não quero ouvir as mudanças porque só quero chamar essa função. Então eu preciso desse caful e do navigator dot pop. Vou apenas escrever. E não deveria ser título. Eles devem ser anotados e excluídos com sucesso. É isso mesmo. Essa é a coisa toda. Agora temos que navegar até esta página a partir da tela inicial. Então vá para a tela inicial. Dentro do construtor de itens. Aqui, embrulhe este recipiente com um poço de tinta e escreva no navegador de contexto, ph e depois rota da página do material Vou enviar para a página de edição da nota com o valor da nota e o valor da nota é a nota atual aqui. Como antes, escreverei um diálogo em tela cheia. É isso mesmo. Então, salve tudo. Por que isso está nesse grão. Não queremos o UUID. Vamos testá-lo. Eu gostaria da minha primeira nota. Vou escrever este é meu conteúdo antigo. Guarde isso para que, se eu clicar nele, veja, essa era a lanchonete antes da lanchonete. Se eu clicar nele, teremos uma exclusão e a atualização. Então, vou apenas atualizá-lo para. Este é meu novo conteúdo, pressione salvar e diga, este é meu novo conteúdo. Se eu clicar nele novamente e excluí-lo, não o exclua com sucesso, e agora é balançar sem notas Isso significa que todas as funcionalidades estão funcionando corretamente com o provedor no nível do aplicativo No próximo vídeo, finalmente integraremos o Mongo Db para que todos os dados recebidos no aplicativo venham de um banco de dados real. Obrigada. 20. Função para adicionar nota: Oi. Bem-vindo de volta. Então, até agora, todas as funcionalidades estavam funcionando apenas no nível do aplicativo Não estávamos armazenando nenhum dado no Mongo DV. Então, agora é hora de integrarmos também a API do Mongo DB. Aqui na pasta lift, crie uma nova pasta services e dentro dela, crie um ponto de serviço de API de arquivo como este. Em primeiro lugar, preciso do pacote HTTP. Vou dar como HTTP, então preciso de modelos do modelo Note. Agora, crie um serviço de API de classe. Aqui, a primeira coisa que queremos é a variável estática. É um URL base de string constante estático . O que é esse URL base? Esse é o domínio do Railway App. Vamos lá e aqui no aplicativo ferroviário, temos o domínio, essa cópia e cole aqui. Mas certifique-se de adicionar a coluna HTTPS aqui e, em seguida, o banco de dados, desculpe, o banco de dados, a rota. Essa é a rota dos nós. Como temos apenas essa rota, isso é mencionado no BaseRL Mas, obviamente, se você tiver várias rotas, não fará isso. Agora, crie uma função para adicionar um nó. Então, estou tornando-a estática para que possamos chamar essa função sem criar um objeto. Portanto, será em todo o futuro. Dê um nome para adicionar nota. Será a função de canto, e passaremos o modelo de notas aqui. Agora, a primeira coisa que precisamos é o URI, escrevemos o URI de solicitação . Espero que você saiba como usar o pacote STP O URI será o URL base. Use o URL base e adicione. Essa era a nossa rota. Se você se lembrar disso no lado do servidor , escreverei que a resposta R é aguardar a adição de HTTP, temos que usar a solicitação post Então temos que enviar a URL, que é a URI. E agora enviaremos o corpo no mapa e escreveremos apenas a função de dois mapas. Se você se lembra na nota, temos esses dois mapas, que os converterão automaticamente em um mapa. É assim que essas coisas acontecem. Espero que você entenda essa conversão de objeto em mapa. Em seguida, teremos o corpo da resposta, escreveremos o código igual ao JC do código e, em seguida, redefiniremos o e, em seguida, redefiniremos Corpo vermelho. Vou simplesmente imprimir o corpo que ele diz para debo, caso contrário, não precisaremos fazer isso na produção Agora, vamos chamar essa função no provedor de notas. Depois disso, notifique os ouvintes, chame o Mongo D V, que é o serviço de API, de adicionar nota É isso mesmo. Agora, você pode estar pensando por que escrevi essa linha no final. Porque isso atualizará a interface em segundos ou instantaneamente. E em segundo plano, os mesmos dados serão enviados para o banco de dados. Obviamente, também será uma boa experiência para o usuário, porque ele não precisará esperar porque poderá ver essa nota instantaneamente na página inicial. E se ele voltar mais tarde, então mais tarde significa que, obviamente, isso levará apenas 5 segundos, mas suponha que em 10 minutos ele abra novamente o aplicativo, então as notas na página inicial serão buscadas do banco e todas as notas serão iguais Lembre-se, obviamente, que você também pode fazer isso na parte superior, mas isso não faz nenhum sentido. Agora vamos fazer isso. Vamos tentar adicionar uma nota. Vou escrever para aprender Sem cadeira. Mostarda. Acho que havia um pouco de ar para o teclado. Vamos ver o que acontece. É por isso que, na maioria das vezes, prefiro dispositivos físicos. Escolha do nó. Podemos salvar e ver no terminal o novo nó criado com o ID this. Então, isso vem do servidor. Espero que você se lembre que essa foi a nossa resposta. Então isso significa que isso é armazenado no banco de dados. Então é isso para este vídeo. S no próximo capítulo. Obrigado. 21. Funcionalidade para atualizar e excluir: Oi Bem vindo de volta. Da mesma forma, como adicionar uma nota. Vamos criar uma funcionalidade de API para atualizar a nota também. Acesse o serviço de API e, abaixo, adicione uma nota. Basta escrever a tática. Futuro. Isso também evitará. Nota de data, faça com que seja uma sincronização. Isso aceitará uma nota. E agora, novamente, crie o URI de solicitação de URI. O URI é igual a URI dot p, o URI base e depois a atualização. Então, a resposta R é aguardar o TTP. Desta vez, temos que usar o put B no servidor e também fornecemos o put. Aqui, temos que substituir o URI e o corpo pela nota no mapa. Então, da mesma forma, decodifique esse corpo de envio do e envie uma string Para excluir, vou apenas copiar essa função e colar. Isso será um nó de exclusão. Estão aqui. Ele será excluído. Sua solicitação de TP será adiada. E é isso. E lembre-se, se quiser, você pode enviar um objeto de nota como esse ou apenas o ID. Depende de você porque, a partir desse mapa, o servidor extrairá o ID sozinho ou, se você enviar apenas o ID , tudo bem. Depende de você. Vamos chamar essa função, acessar o provedor de notas e, da mesma forma, no final, escrever uma nota de data do serviço de API e escrever uma nota de serviço de API, não atrasar, como essa, e salvá-la. Isso é o que acontecerá se eu for aqui e escrever Dummy atualizado e clicar aqui Veja. A nota foi atualizada com ID e Dummyd Isso significa que ele foi atualizado no servidor. Lembre-se de que, se você atualizá-lo , esses dados serão removidos porque não estamos buscando notas no momento Isso está apenas no nível do aplicativo. Mas pelo menos você pode ver que está funcionando. Portanto, nossa atualização e exclusão do APA também estão funcionando. No próximo vídeo, escreveremos a funcionalidade para buscar todas as notas e criar uma função que mostre tudo aqui. Obrigada 22. Função para buscar notas: Oi Bem vindo de volta. É hora de buscarmos todos os nós na tela inicial para que, se reiniciarmos o aplicativo , os dados também possam ser vistos Crie uma nova função no arquivo do serviço APS aqui. Vamos escrever um futuro estático. E isso não retornará vazio. Isso retornará a lista de nós. Nós buscamos nós. E enviaremos o ID do usuário aqui. Então queremos o URI, então é a lista de URI base de URI e2ip de solicitação URI e2ip base Lembre-se de que esse é o ID do usuário. Temos que enviá-lo na URL apenas porque será uma solicitação GT. Nossa resposta R é igual a um TPG e, em seguida, solicitamos o URI, assim Não precisamos enviar mais nada. Em seguida, escrever a lista decodificada é para Json decodificar a resposta a esse corpo Sabemos que será uma lista. E então basta retornar o mapa de pontos decodificado. Vou converter todos os nós no objeto do nó. Nota do mapa, temos que enviar a nota e isso é para perder. Você precisa conhecer a serialização JC para essas coisas. Então, espero que esses sejam os conceitos de vibração. Mas entenda que estamos convertendo o mapa em um objeto de nota e devolvendo-o Em seguida, também temos que criar uma nova função na classe do provedor para chamar isso de notas de busca Acesse o provedor de notas aqui. E vamos começar ter uma variável booleana para que a tela inicial mostre um indicador de carregamento Se estiver alternando, evitarei que os nós de patch sincronizem. Será uma lista de notas em forma de notas que o serviço de API await faz para buscar Agora, vou dar o ID do usuário. Então, esses dados virão em ordem crescente, já que eu não mencionei nada no site do servidor Então, o que vou fazer é escrever que os nós são iguais a buscar nós com pontos invertidos na lista de dois pontos Então, eu simplesmente inverti tudo dentro dela e depois converti em lista novamente e atribuo isso aos nossos nós viáveis Para que possa ser visto na parte frontal. Lembre-se de que, se você não escrever essa linha , ela também funcionará, mas estará em ordem crescente Portanto, as notas mais recentes não estarão no topo. Você pode tentar. Em seguida, acrescentarei que a facilidade de carregamento é igual a falsa e notificarei os ouvintes E vou chamar esse patch de fun nodes no construtor desse provedor de Nodes Então, quando sua instância for chamada, ela chamará essa função de nós e nossa tela inicial será preenchida com os dados mais recentes dos nós Agora, finalmente, vá para a tela inicial, aqui, no corpo Vou simplesmente escrever as notas fornecidas se estiver carregando, então const center o indicador de progresso circular infantil É isso mesmo. Agora, vamos ver. O indicador de progresso circular está lá. Sim. Veja, temos essa nota, que vem do banco de dados. Então, se eu atualizá-lo novamente, essa nota também estará lá Isso significa que nossa API também está funcionando perfeitamente. Nosso front-end e back-end agora estão conectados. Então, a última coisa que faremos é, no próximo vídeo, usar as preferências compartilhadas para armazenar o ID do usuário. Então, aqui, agora mesmo , na pesquisa In the API. Desculpe, no provedor de notas. Estou codificando o ID do usuário, o que não é bom porque, obviamente, pessoas diferentes têm IDs de usuário diferentes Então, no próximo vídeo, criaremos um ID de usuário exclusivo e o armazenaremos no dispositivo do usuário e o usaremos para as operações de CRD. Obrigada 23. Função para armazenar userid: Oi Bem vindo de volta. Então, até agora, estávamos usando IDs de usuário fictícios. Vamos usar um armazenamento de dados offline, como preferências compartilhadas, para salvar o ID do usuário criado pelo UUID E lembre-se de que só podemos armazenar valores int, string, double e booleanos na forma de valores-chave Dentro das preferências compartilhadas. Eu acredito que você não pode armazenar modelos de dados complexos. P, você tem que usar. Oi, posso armazená-lo, eu sei, mas as preferências compartilhadas, não tenho certeza. Agora pare de solicitar a carta e, no terminal, basta escrever a letra P compartilhada por pessoa. Está sendo instalado. Então, se eu for aqui no pub sec dot, posso ver as preferências compartilhadas, ok? Agora, vamos criar uma nova função, que retornará uma ID exclusiva para a ID do usuário. Então, nas notas fornecidas, vamos aqui, criar uma nova função, que retornará a string, obterá o ID do usuário. Uma sincronização. Ok. Em primeiro lugar, criaremos uma instância referencia flaps, uma instância de preferências compartilhadas para obter uma instância como essa Em seguida, criarei uma string de nível, que escreverá que o ID do usuário é igual a, talvez, get string. Então, primeiro, tentarei obter o ID do usuário do dispositivo. Ou seja, se o usuário não for um novo usuário, ou seja, ele pode estar usando um aplicativo, então o ID do usuário será armazenado. Agora, verificarei se o ID do usuário é igual a nulo, seja, se é um novo usuário, criarei a chave que está definida como string, depois escreverei o ID do usuário da chave, e o valor aqui será o UUID Isso criará uma ID exclusiva para nós e eu atribuirei essa ID à chave. Desculpe, espere. Eu vou te explicar. Eu sei que você pode estar ficando um pouco confuso. E, finalmente, retornarei o ID do usuário. E o que não é nulo, eu sei porque aqui estamos armazenando se for nulo e, se não for nulo, estamos apenas retornando o ID do usuário diretamente Novamente, estou explicando que, primeiro, criaremos uma instância de preferência compartilhada. Em seguida, verificaremos se já existe uma chave de ID de usuário. Caso contrário, se for nulo, criaremos uma chave para esse ID de usuário na preferência compartilhada e salvaremos um novo ID exclusivo dentro dela E então eu atribuirei esse valor a essa variável e o retornarei no final. Isso significa que essa função retornará de qualquer forma um ID de usuário. Em seguida, chamarei essa função aqui dentro, ou seja, string, ID do usuário é igual a await get user ID como este, e enviarei esse ID de usuário para essa função Ok. Todo o resto é bom. Então, agora temos que fazer com que o ID do usuário seja armazenado no Agora, temos o ID do usuário armazenado nas preferências compartilhadas. Precisamos garantir que enviemos esse ID de usuário ao adicionar uma nova nota. Acesse esta página aqui. Estamos enviando um hd. Vou escrever novamente. O final s é igual ao peso das referências compartilhadas que obtêm a instância. E como estamos usando um peso, precisamos sincronizá-lo. Em seguida, vou apenas escrever ID do usuário da string para talvez obter a string, e o nome do st é o ID do usuário. O nome da chave é ID do usuário. Aqui obteremos esse ID de usuário e eu o enviarei aqui. R. É isso mesmo. Essa é a única mudança necessária. Então, obviamente, não estamos usando nenhum tipo de autenticação aqui. Eu vou fazer alguns outros núcleos nele. No momento, este curso é dedicado exclusivamente às operações de petróleo bruto e como usar o GS Back e para iniciantes Há muitas coisas que você pode fazer quando, pelo menos agora, se sentir confortável com o básico. Então, espero que você tenha gostado. No próximo vídeo, testarei o aplicativo completo pois todo o resto está pronto. Obrigada 24. Teste o aplicativo completo: Oi Bem-vindo ao vídeo final deste curso. Neste curso, simplesmente testaremos o funcionamento completo do aplicativo. Então, antes de prosseguir, vamos excluir todos os registros anteriores do banco de dados porque eles tinham IDs de usuário fictícios Então, vou deletar todas essas coisas. Ok. Então, acho que deletei tudo. Vamos executar nosso aplicativo. Ok. Obviamente, não temos nenhuma nota no momento. Então eu vou criar. E aqui vou aprender o desenvolvimento da plataforma e salvá-la. Veja a nota adicionada com sucesso. Vou adicionar outra nota. Sem back-end, vou simplesmente escrever operação master red usando o Mongo Tenho mais dois e, finalmente, escreverei o exercício Daily eight, treino e código. Ok. Eu tenho três notas. E se eu começasse, então agora, então eu tenho três nós. E então, se eu tentar atualizar este. E só aprenda nod JS. Usando Mongo DB e flutter. Se eu apenas atualizá-lo, veja. Temos os acenos de aprendizagem e aqui temos o flutter. E se eu reiniciá-lo novamente, vamos ver. Temos os mesmos dados. É por isso que eu chamo essa função de banco de dados no final depois de notificar os ouvintes, porque, obviamente, a experiência do usuário é muito boa aqui O usuário não precisa esperar para armazenar os dados. Ele pode simplesmente ver isso em sua interface de usuário. E agora, se eu excluir este também, consulte Não, exclua-o com sucesso. Agora temos apenas duas notas, e se eu reiniciei, então apenas duas notas estão sendo buscadas Então, estou feliz que o aplicativo esteja funcionando sem problemas. E aprendemos muito nesse curso. Obviamente, tudo era para o nível iniciante. Mas se você conhece o básico, obviamente , no futuro, também poderá trabalhar em projetos complexos Então, espero que você tenha gostado. Confira meus outros cursos também. Obrigada Tenha um bom dia e continue praticando.