More
Как реализовать сочетания клавиш в Flutter с помощью CallbackShortcuts и Back4App
23 мин
введение сочетания клавиш улучшают пользовательский опыт, предоставляя быстрый доступ к общим действиям в приложении в flutter виджет callbackshortcuts позволяет разработчикам напрямую сопоставлять комбинации клавиш с функциями обратного вызова без необходимости определения действий или намерений это упрощает процесс добавления сочетаний клавиш в ваше приложение в этом учебном пособии вы узнаете, как интегрировать callbackshortcuts в приложение flutter и использовать back4app — облачную платформу как услугу, основанную на parse server, для хранения и извлечения данных к концу этого учебного пособия у вас будет приложение flutter, которое реагирует на сочетания клавиш для выполнения действий, таких как получение данных из back4app предварительные требования чтобы завершить это учебное пособие, вам потребуется установленный flutter sdk следуйте официальному руководству по установке flutter https //flutter dev/docs/get started/install для вашей операционной системы базовые знания о flutter и dart если вы новичок в flutter, ознакомьтесь с документацией flutter https //flutter dev/docs , чтобы ознакомиться с основами ide или текстовый редактор , такой как visual studio code или android studio аккаунт back4app зарегистрируйтесь для получения бесплатного аккаунта на back4app https //www back4app com/ sdk parse server для flutter добавлен в ваш проект узнайте, как его настроить, следуя руководству по sdk flutter от back4app https //www back4app com/docs/flutter/parse flutter sdk физическая клавиатура или эмулятор для тестирования сочетаний клавиш шаг 1 – настройка проекта flutter 1 1 создание нового проекта flutter откройте терминал и выполните flutter create callback shortcuts app перейдите в каталог проекта cd callback shortcuts app 1 2 добавить зависимости откройте pubspec yaml и добавьте следующие зависимости dependencies flutter sdk flutter parse server sdk flutter ^4 0 1 запустите flutter pub get для установки пакетов шаг 2 – настройка back4app 2 1 создание нового приложения back4app войдите в ваш панель управления back4app https //dashboard back4app com/ нажмите на "создать новое приложение" введите имя для вашего приложения, например, "callbackshortcutsapp" , и нажмите "создать" 2 2 настройка модели данных в вашей панели управления приложением перейдите в раздел "база данных" нажмите на "создать класс" в модальном окне выберите "пользовательский" введите "элемент" в качестве имени класса нажмите "создать класс" 2 3 добавить столбцы в класс в классе "элемент" нажмите на "+" чтобы добавить новый столбец добавьте следующие столбцы имя тип строка описание тип строка добавьте некоторые образцы данных в класс "элемент" например 2 4 получить учетные данные приложения перейдите к настройки приложения > безопасность и ключи запишите ваш идентификатор приложения и ключ клиента шаг 3 – инициализация parse в вашем приложении flutter откройте lib/main dart и измените его следующим образом 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(), ); } } замените 'your application id' и 'your client key' на ваши фактические учетные данные back4app шаг 4 – получение данных из back4app создайте новый файл 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), ); }, ), ); } } объяснение класс item модельный класс для представления элементов, полученных из back4app fetchitems() получает данные из класса item в back4app и обновляет список items build() отображает список элементов или индикатор загрузки, если данные все еще загружаются шаг 5 – реализация callbackshortcuts теперь давайте добавим сочетания клавиш для обновления данных и навигации по списку 5 1 добавить виджеты focus и callbackshortcuts измените метод build() в 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), ), ); }, ), ), ), ); } объяснение focus widget оборачивает тело, чтобы гарантировать, что оно может получать фокус и события клавиатуры callbackshortcuts соответствует сочетаниям клавиш функциям обратного вызова ctrl + r обновляет данные, вызывая fetchitems() стрелка вниз перемещает фокус на следующий элемент стрелка вверх перемещает фокус на предыдущий элемент focusableactiondetector делает каждый listtile доступным для фокуса, чтобы можно было навигировать с помощью клавиатуры 5 2 реализация функций навигации добавьте следующие методы для обработки навигации по элементам void focusnextitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus nextfocus(); } } void focuspreviousitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus previousfocus(); } } шаг 6 – тестирование сочетаний клавиш 6 1 запустите приложение в вашем терминале выполните flutter run 6 2 проверьте сочетание клавиш обновления нажмите ctrl + r (или cmd + r на macos), пока приложение работает вы должны увидеть сообщение snackbar с текстом "данные обновлены" список должен обновляться, если в данных произошли изменения 6 3 проверьте сочетания клавиш навигации используйте клавиши стрелка вниз и стрелка вверх для навигации по списку вы должны увидеть, как фокус перемещается на разные элементы заключение в этом учебном пособии вы узнали, как реализовать сочетания клавиш в приложении flutter с использованием callbackshortcuts вы интегрировали back4app для получения и отображения данных и улучшили пользовательский опыт, позволив пользователям взаимодействовать с приложением с помощью сочетаний клавиш ключевые выводы callbackshortcuts упрощает добавление сочетаний клавиш, сопоставляя комбинации клавиш непосредственно с функциями обратного вызова управление фокусом необходимо для виджетов, чтобы они могли получать события клавиатуры интеграция с back4app обеспечивает масштабируемую серверную часть для хранения и извлечения данных следующие шаги расширить сочетания клавиш добавить больше сочетаний клавиш для дополнительной функциональности специфические модификаторы платформы обрабатывать различия в модификаторах клавиш между платформами (например, control против command) доступность убедитесь, что ваше приложение доступно, поддерживая навигацию с клавиатуры и экранные считыватели обработка ошибок улучшить обработку ошибок при получении данных из back4app дополнительные ресурсы документация back4app https //www back4app com/docs руководство по parse sdk для flutter https //docs parseplatform org/flutter/guide/ официальная документация flutter https //flutter dev/docs виджет callbackshortcuts https //api flutter dev/flutter/widgets/callbackshortcuts class html счастливого кодирования!