More
Como Implementar Atalhos de Teclado no Flutter com CallbackShortcuts e Back4App
24 min
introdução os atalhos de teclado melhoram a experiência do usuário ao fornecer acesso rápido a ações comuns dentro de um aplicativo no flutter, o callbackshortcuts widget permite que os desenvolvedores mapeiem combinações de teclas do teclado diretamente para funções de callback sem a necessidade de definir ações ou intenções isso simplifica o processo de adicionar atalhos de teclado ao seu aplicativo neste tutorial, você aprenderá como integrar callbackshortcuts em um aplicativo flutter e usar o back4app—um backend como serviço alimentado pelo parse server—para armazenar e recuperar dados ao final deste tutorial, você terá um aplicativo flutter que responde a atalhos de teclado para realizar ações como buscar dados do back4app pré requisitos para completar este tutorial, você precisará flutter sdk instalado em sua máquina siga o guia de instalação oficial do flutter https //flutter dev/docs/get started/install para o seu sistema operacional conhecimento básico de flutter e dart se você é novo no flutter, revise a documentação do flutter https //flutter dev/docs para se familiarizar com os conceitos básicos um ide ou editor de texto como visual studio code ou android studio uma conta back4app inscreva se para uma conta gratuita em back4app https //www back4app com/ parse server sdk para flutter adicionado ao seu projeto aprenda como configurá lo seguindo o guia do sdk flutter do back4app https //www back4app com/docs/flutter/parse flutter sdk um teclado físico ou emulador para testar os atalhos de teclado passo 1 – configurando o projeto flutter 1 1 criar um novo projeto flutter abra seu terminal e execute flutter create callback shortcuts app navegue até o diretório do projeto cd callback shortcuts app 1 2 adicionar dependências abra pubspec yaml e adicione as seguintes dependências dependencies flutter sdk flutter parse server sdk flutter ^4 0 1 execute flutter pub get para instalar os pacotes passo 2 – configurando o back4app 2 1 criar um novo aplicativo no back4app faça login no seu painel do back4app https //dashboard back4app com/ clique em "criar novo app" digite um nome para seu aplicativo, por exemplo, "callbackshortcutsapp" , e clique em "criar" 2 2 configurar o modelo de dados no seu painel de aplicação, navegue até o "banco de dados" seção clique em "criar uma classe" na modal selecione "personalizado" digite "item" como o nome da classe clique em "criar classe" 2 3 adicionar colunas à classe na classe "item" , clique em "+" para adicionar uma nova coluna adicione as seguintes colunas nome tipo string descrição tipo string adicione alguns dados de exemplo à classe "item" por exemplo 2 4 obter credenciais da aplicação navegue até configurações do app > segurança e chaves anote seu id da aplicação e chave do cliente passo 3 – inicializando o parse em seu app flutter abra lib/main dart e modifique o da seguinte forma import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk dart'; import 'home page dart'; // you'll create this file next void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your application id'; const keyclientkey = 'your client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, debug true, ); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( title 'callback shortcuts app', theme themedata( primaryswatch colors blue, ), home homepage(), ); } } substitua 'your application id' e 'your client key' pelas suas credenciais reais do back4app passo 4 – buscando dados do back4app crie um novo arquivo lib/home page dart import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk dart'; class homepage extends statefulwidget { @override homepagestate createstate() => homepagestate(); } class item { final string name; final string description; item(this name, this description); } class homepagestate extends state\<homepage> { list\<item> items = \[]; future\<void> fetchitems() async { final querybuilder\<parseobject> query = querybuilder\<parseobject>(parseobject('item')); final parseresponse apiresponse = await query query(); if (apiresponse success && apiresponse results != null) { setstate(() { items = apiresponse results! map((data) { final name = data get\<string>('name') ?? ''; final description = data get\<string>('description') ?? ''; return item(name, description); }) tolist(); }); } else { print('error fetching data ${apiresponse error? message}'); } } @override void initstate() { super initstate(); fetchitems(); } @override widget build(buildcontext context) { return scaffold( appbar appbar( title text('callback shortcuts app'), ), body items isempty ? center(child circularprogressindicator()) listview\ builder( itemcount items length, itembuilder (context, index) { return listtile( title text(items\[index] name), subtitle text(items\[index] description), ); }, ), ); } } explicação classe item uma classe modelo para representar os itens buscados do back4app fetchitems() busca dados da classe item no back4app e atualiza a lista de itens build() exibe a lista de itens ou um indicador de carregamento se os dados ainda estiverem sendo buscados passo 5 – implementando callbackshortcuts agora, vamos adicionar atalhos de teclado para atualizar os dados e navegar pela lista 5 1 adicionar widgets focus e callbackshortcuts modifique o build() método em home page dart @override widget build(buildcontext context) { return scaffold( appbar appbar( title text('callback shortcuts app'), ), body focus( autofocus true, child callbackshortcuts( bindings { singleactivator(logicalkeyboardkey keyr, control true) () { fetchitems(); scaffoldmessenger of(context) showsnackbar( snackbar(content text('data refreshed')), ); }, singleactivator(logicalkeyboardkey arrowdown) () { focusnextitem(); }, singleactivator(logicalkeyboardkey arrowup) () { focuspreviousitem(); }, }, child items isempty ? center(child circularprogressindicator()) listview\ builder( itemcount items length, itembuilder (context, index) { return focusableactiondetector( child listtile( title text(items\[index] name), subtitle text(items\[index] description), ), ); }, ), ), ), ); } explicação focus widget envolve o corpo para garantir que ele possa receber foco e eventos de teclado callbackshortcuts mapeia atalhos de teclado para funções de callback ctrl + r atualiza os dados chamando fetchitems() seta para baixo move o foco para o próximo item seta para cima move o foco para o item anterior focusableactiondetector torna cada listtile focável para navegar usando o teclado 5 2 implementar funções de navegação adicione os seguintes métodos para lidar com a navegação de itens void focusnextitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus nextfocus(); } } void focuspreviousitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus previousfocus(); } } passo 6 – testando atalhos de teclado 6 1 executar o app no seu terminal, execute flutter run 6 2 testar atalho de atualização pressione ctrl + r (ou cmd + r no macos) enquanto o aplicativo estiver em execução você deve ver uma mensagem de snackbar dizendo "dados atualizados" a lista deve ser atualizada se houver alguma alteração nos dados 6 3 testar atalhos de navegação use as teclas seta para baixo e seta para cima para navegar pela lista você deve ver o foco se mover para diferentes itens conclusão neste tutorial, você aprendeu como implementar atalhos de teclado em um aplicativo flutter usando callbackshortcuts você integrou o back4app para buscar e exibir dados, e melhorou a experiência do usuário permitindo que os usuários interajam com o aplicativo usando atalhos de teclado principais conclusões callbackshortcuts simplifica a adição de atalhos de teclado mapeando combinações de teclas diretamente para funções de retorno de chamada gerenciamento de foco essencial para que os widgets recebam eventos de teclado integração com back4app fornece um backend escalável para armazenar e recuperar dados próximos passos expandir atalhos adicionar mais atalhos de teclado para funcionalidade adicional modificadores específicos da plataforma lidar com diferenças nas teclas modificadoras entre plataformas (por exemplo, control vs command) acessibilidade garantir que seu aplicativo seja acessível, suportando navegação por teclado e leitores de tela tratamento de erros melhorar o tratamento de erros ao buscar dados do back4app recursos adicionais documentação do back4app https //www back4app com/docs guia do sdk parse para flutter https //docs parseplatform org/flutter/guide/ documentação oficial do flutter https //flutter dev/docs widget callbackshortcuts https //api flutter dev/flutter/widgets/callbackshortcuts class html feliz codificação!