More
Construindo Menus Suspensos no Flutter com Dados de Backend do Back4app
12 min
introdução já teve dificuldades em criar menus suspensos dinâmicos no flutter? você não está sozinho! neste guia, vamos te mostrar como construir um menu suspenso que busca suas opções de um backend do back4app é mais fácil do que você pode pensar, e ao final, você terá um menu suspenso flexível e orientado a dados em seu aplicativo flutter imagine que você está construindo um aplicativo para um serviço de entrega de pizza os ingredientes disponíveis podem mudar com frequência, então codificá los não é ideal é aí que um menu suspenso orientado a backend se torna útil! pré requisitos antes de começarmos, certifique se de que você tem uma conta no back4app (não se preocupe, é grátis para se inscrever) e o flutter instalado em sua máquina se você é novo no flutter, confira o guia de instalação deles ah, e um conhecimento básico de dart e widgets do flutter ajudará, mas vamos te guiar pelas partes complicadas! passo 1 – configurando seu backend do back4app vamos configurar nosso backend do back4app não se preocupe, não é tão assustador quanto parece! primeiro, faça login na sua conta do back4app sem conta? sem problemas! vá para back4app com https //www back4app com e inscreva se – é grátis e rápido crie um novo projeto de backend você pode nomeá lo de algo inteligente como 'awesomedropdowndata' ou apenas ir com 'dropdownexample' se estiver se sentindo menos criativo hoje agora, vamos criar uma classe parse pense nisso como uma tabela especial para nossas opções de menu suspenso vamos chamá la de 'options' (imaginativo, certo?) adicione uma coluna chamada optionvalue (string) para armazenar nossas escolhas de menu suspenso hora de adicionar alguns dados de exemplo! vamos preencher nossa classe 'options' com alguns ingredientes de pizza saborosos pepperoni cogumelos queijo extra por último, mas não menos importante, pegue seu id de aplicação e chave de cliente nas configurações do seu projeto precisaremos disso para conectar nosso aplicativo flutter ao back4app passo 2 – configurando o projeto flutter vamos criar um novo projeto flutter abra seu terminal, encontre um lugar aconchegante para seu projeto e execute flutter create dropdown example agora, vamos adicionar algumas dependências abra pubspec yaml e adicione estas linhas dependencies flutter sdk flutter parse server sdk flutter ^3 1 0 # use the latest version available não se esqueça de executar flutter pub get para buscar esses pacotes! agora, vamos dizer ao nosso aplicativo flutter como se comunicar com o back4app abra lib/main dart e adicione este código não se preocupe se parecer um pouco intimidador – vamos dividi lo! import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( home dropdownmenuscreen(), ); } } lembre se de substituir 'your back4app app id' e 'your back4app client key' pelas suas credenciais reais do back4app estas são como o aperto de mão secreto entre seu aplicativo e o back4app! passo 3 – construindo o menu suspenso agora para a parte divertida – vamos criar nosso menu suspenso! aqui está o código para nosso dropdownmenuscreen widget pode parecer muito, mas vamos dividi lo, prometo! class dropdownmenuscreen extends statefulwidget { @override dropdownmenuscreenstate createstate() => dropdownmenuscreenstate(); } class dropdownmenuscreenstate extends state\<dropdownmenuscreen> { string? selectedoption; list\<string> options = \[]; bool loading = true; @override void initstate() { super initstate(); fetchoptions(); } future\<void> fetchoptions() async { final query = querybuilder\<parseobject>(parseobject('options')); final response = await query query(); if (response success && response results != null) { setstate(() { options = response results! map((e) => e get\<string>('optionvalue')!) tolist(); loading = false; }); } else { setstate(() { loading = false; }); } } @override widget build(buildcontext context) { return scaffold( appbar appbar(title text('pizza topping selector')), body loading ? center(child circularprogressindicator()) center( child dropdownbutton\<string>( value selectedoption, hint text('choose your topping'), items options map((string option) { return dropdownmenuitem\<string>( value option, child text(option), ); }) tolist(), onchanged (string? newvalue) { setstate(() { selectedoption = newvalue!; }); }, ), ), ); } } ufa, isso é um pedaço de código! mas não entre em pânico – vamos dividi lo peça por peça este widget está fazendo algumas coisas chave para nós ele está se conectando ao nosso backend do back4app e buscando nossa lista de opções pense nisso como um garçom trazendo o menu em um restaurante enquanto está buscando, ele mostra um indicador de carregamento porque ninguém gosta de olhar para uma tela em branco, certo? uma vez que ele tem as opções, ele as exibe em um bonito menu suspenso quando você escolhe uma opção, ele lembra sua escolha legal, né? e a melhor parte é que, sempre que você atualizar as opções no back4app, seu aplicativo mostrará automaticamente a nova lista na próxima vez que carregar mágica! passo 4 – executando o aplicativo hora do momento da verdade! execute seu aplicativo usando flutter run se tudo correr bem, você deve ver um menu suspenso preenchido com as coberturas de pizza que armazenamos no back4app vá em frente, selecione uma cobertura perceba como ela é atualizada instantaneamente? esse é o poder da gestão de estado no flutter! melhores práticas para menus suspensos com integração de backend gerenciar estados de carregamento como você viu em nosso exemplo, usamos um indicador de carregamento enquanto buscamos dados é como colocar uma música enquanto seus convidados esperam pelo jantar – isso torna a experiência melhor! tratamento de erros em um aplicativo do mundo real, você gostaria de adicionar algum tratamento de erros e se a internet cair? ou o back4app estiver tirando uma soneca? sempre planeje o inesperado! usar paginação se sua lista suspensa crescer mais do que a lista de ingredientes de uma pizza estilo chicago, considere implementar paginação seus usuários (e seus dispositivos) vão agradecer conclusão você acabou de construir um menu suspenso inteligente, alimentado por backend no flutter! 🎉 por que não tentar estender este exemplo? talvez adicionar um botão que adiciona a cobertura selecionada a um pedido de pizza, ou tentar exibir as opções em um componente de ui diferente o céu é o limite! e lembre se, se você ficar preso ou tiver perguntas, as comunidades flutter e back4app são super úteis não tenha vergonha de pedir ajuda! agora vá em frente e construa uis dinâmicas e incríveis! 💪 para mais informações, confira a documentação do flutter https //flutter dev/docs e documentação do back4app https //www back4app com/docs feliz codificação!