More
Cómo implementar atajos de teclado en Flutter con CallbackShortcuts y Back4App
24 min
introducción los atajos de teclado mejoran la experiencia del usuario al proporcionar acceso rápido a acciones comunes dentro de una aplicación en flutter, el callbackshortcuts widget permite a los desarrolladores mapear combinaciones de teclas del teclado directamente a funciones de callback sin necesidad de definir acciones o intenciones esto simplifica el proceso de agregar atajos de teclado a tu aplicación en este tutorial, aprenderás cómo integrar callbackshortcuts en una aplicación flutter y usar back4app—un backend como servicio impulsado por parse server—para almacenar y recuperar datos al final de este tutorial, tendrás una aplicación flutter que responde a atajos de teclado para realizar acciones como obtener datos de back4app requisitos previos para completar este tutorial, necesitarás flutter sdk instalado en tu máquina sigue la guía de instalación oficial de flutter https //flutter dev/docs/get started/install para tu sistema operativo conocimientos básicos de flutter y dart si eres nuevo en flutter, revisa la documentación de flutter https //flutter dev/docs para familiarizarte con los conceptos básicos un ide o editor de texto como visual studio code o android studio una cuenta de back4app regístrate para obtener una cuenta gratuita en back4app https //www back4app com/ parse server sdk para flutter agregado a tu proyecto aprende cómo configurarlo siguiendo la guía de sdk de flutter de back4app https //www back4app com/docs/flutter/parse flutter sdk un teclado físico o emulador para probar los atajos de teclado paso 1 – configurando el proyecto flutter 1 1 crear un nuevo proyecto flutter abre tu terminal y ejecuta flutter create callback shortcuts app navega al directorio del proyecto cd callback shortcuts app 1 2 agregar dependencias abre pubspec yaml y agrega las siguientes dependencias dependencies flutter sdk flutter parse server sdk flutter ^4 0 1 ejecuta flutter pub get para instalar los paquetes paso 2 – configuración de back4app 2 1 crear una nueva aplicación en back4app inicia sesión en tu panel de control de back4app https //dashboard back4app com/ haz clic en "crear nueva app" ingresa un nombre para tu aplicación, por ejemplo, "callbackshortcutsapp" , y haz clic en "crear" 2 2 configurar el modelo de datos en el panel de control de tu aplicación, navega a la "base de datos" sección haz clic en "crear una clase" en el modal selecciona "personalizado" ingresa "elemento" como el nombre de la clase haz clic en "crear clase" 2 3 agregar columnas a la clase en la "elemento" clase, haz clic en "+" para agregar una nueva columna agrega las siguientes columnas nombre escribe cadena descripción escribe cadena agrega algunos datos de ejemplo a la "elemento" clase por ejemplo 2 4 obtener credenciales de la aplicación navegar a configuraciones de la aplicación > seguridad y claves anote su id de aplicación y clave de cliente paso 3 – inicializando parse en su aplicación flutter abra lib/main dart y modifíquelo de la siguiente manera 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(), ); } } reemplace 'your application id' y 'your client key' con sus credenciales reales de back4app paso 4 – recuperando datos de back4app cree un nuevo archivo 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), ); }, ), ); } } explicación clase item una clase modelo para representar los elementos recuperados de back4app fetchitems() recupera datos de la clase item en back4app y actualiza la lista de items build() muestra la lista de elementos o un indicador de carga si los datos aún se están recuperando paso 5 – implementando callbackshortcuts ahora, agreguemos atajos de teclado para actualizar los datos y navegar a través de la lista 5 1 agregar widgets de enfoque y callbackshortcuts modifica el build() método en 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), ), ); }, ), ), ), ); } explicación focus widget envuelve el cuerpo para asegurarse de que puede recibir eventos de enfoque y teclado callbackshortcuts mapea atajos de teclado a funciones de callback ctrl + r refresca los datos llamando a fetchitems() flecha abajo mueve el enfoque al siguiente elemento flecha arriba mueve el enfoque al elemento anterior focusableactiondetector hace que cada listtile sea enfocable para navegar usando el teclado 5 2 implementar funciones de navegación agrega los siguientes métodos para manejar la navegación de elementos void focusnextitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus nextfocus(); } } void focuspreviousitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus previousfocus(); } } paso 6 – pruebas de atajos de teclado 6 1 ejecutar la aplicación en tu terminal, ejecuta flutter run 6 2 probar el acceso directo de actualización presiona ctrl + r (o cmd + r en macos) mientras la aplicación está en ejecución deberías ver un mensaje de snackbar que dice "datos actualizados" la lista debería actualizarse si hay algún cambio en los datos 6 3 probar los accesos directos de navegación usa las teclas flecha abajo y flecha arriba para navegar a través de la lista deberías ver el enfoque moverse a diferentes elementos conclusión en este tutorial, aprendiste cómo implementar accesos directos de teclado en una aplicación flutter usando callbackshortcuts integraste back4app para obtener y mostrar datos, y mejoraste la experiencia del usuario al permitir que los usuarios interactúen con la aplicación usando accesos directos de teclado conclusiones clave callbackshortcuts simplifica la adición de atajos de teclado al mapear combinaciones de teclas directamente a funciones de retorno de llamada gestión de enfoque esencial para que los widgets reciban eventos de teclado integración de back4app proporciona un backend escalable para almacenar y recuperar datos próximos pasos expandir atajos agregar más atajos de teclado para funcionalidad adicional modificadores específicos de plataforma manejar diferencias en las teclas modificadoras entre plataformas (por ejemplo, control vs command) accesibilidad asegúrate de que tu aplicación sea accesible al soportar la navegación por teclado y lectores de pantalla manejo de errores mejora el manejo de errores al obtener datos de back4app recursos adicionales documentación de back4app https //www back4app com/docs guía de parse sdk para flutter https //docs parseplatform org/flutter/guide/ documentación oficial de flutter https //flutter dev/docs widget callbackshortcuts https //api flutter dev/flutter/widgets/callbackshortcuts class html ¡feliz codificación!