More
Flutter에서 CallbackShortcuts와 Back4App을 사용하여 키보드 단축키를 구현하는 방법
23 분
소개 키보드 단축키는 애플리케이션 내에서 일반적인 작업에 빠르게 접근할 수 있도록 하여 사용자 경험을 향상시킵니다 flutter에서는 callbackshortcuts 위젯을 사용하여 개발자가 키보드 키 조합을 콜백 함수에 직접 매핑할 수 있도록 하여 작업이나 인텐트를 정의할 필요가 없습니다 이는 앱에 키보드 단축키를 추가하는 과정을 단순화합니다 이 튜토리얼에서는 callbackshortcuts 를 flutter 애플리케이션에 통합하고 parse server로 구동되는 백엔드 서비스인 back4app을 사용하여 데이터를 저장하고 검색하는 방법을 배웁니다 이 튜토리얼이 끝나면 back4app에서 데이터를 가져오는 등의 작업을 수행하기 위해 키보드 단축키에 반응하는 flutter 앱을 갖게 될 것입니다 전제 조건 이 튜토리얼을 완료하려면 다음이 필요합니다 flutter sdk 가 귀하의 컴퓨터에 설치되어 있어야 합니다 공식 flutter 설치 가이드 https //flutter dev/docs/get started/install 를 따라 귀하의 운영 체제에 맞게 설치하십시오 flutter 및 dart에 대한 기본 지식 flutter가 처음이라면 flutter 문서 https //flutter dev/docs 를 검토하여 기본 사항에 익숙해지십시오 visual studio code 또는 android studio와 같은 ide 또는 텍스트 편집기 back4app 계정 back4app https //www back4app com/ 에서 무료 계정을 등록하십시오 flutter용 parse server sdk 를 프로젝트에 추가해야 합니다 back4app flutter sdk 가이드 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 데이터 모델 설정하기 애플리케이션 대시보드에서 "database" 섹션으로 이동합니다 클릭하여 "create a class" 모달에서 선택하십시오 "custom" 입력하십시오 "item" 클래스로 이름을 클릭하십시오 "create class" 2 3 클래스에 열 추가하기 "item" 클래스에서 "+" 를 클릭하여 새 열을 추가합니다 다음 열을 추가하십시오 이름 유형 문자열 설명 유형 문자열 "item" 클래스에 샘플 데이터를 추가하십시오 예를 들어 2 4 애플리케이션 자격 증명 얻기 다음으로 이동하십시오 앱 설정 > 보안 및 키 다음 정보를 적어 두십시오 애플리케이션 id 및 클라이언트 키 3단계 – flutter 앱에서 parse 초기화 다음 파일을 열고 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() back4app의 item 클래스에서 데이터를 가져오고 items 목록을 업데이트합니다 build() 항목 목록을 표시하거나 데이터가 아직 가져오는 중인 경우 로딩 표시기를 표시합니다 5단계 – callbackshortcuts 구현하기 이제 데이터 새로 고침 및 목록 탐색을 위한 키보드 단축키를 추가해 보겠습니다 5 1 포커스 및 콜백 단축키 위젯 추가 다음의 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), ), ); }, ), ), ), ); } 설명 포커스 위젯 본문을 감싸서 포커스와 키보드 이벤트를 받을 수 있도록 합니다 콜백 단축키 키보드 단축키를 콜백 함수에 매핑합니다 ctrl + r fetchitems() 을 호출하여 데이터를 새로 고칩니다 아래 화살표 다음 항목으로 포커스를 이동합니다 위 화살표 이전 항목으로 포커스를 이동합니다 포커스 가능한 액션 감지기 각 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에서) 를 누르세요 "데이터가 새로 고쳐졌습니다"라는 스낵바 메시지가 표시됩니다 데이터에 변경 사항이 있으면 목록이 업데이트되어야 합니다 6 3 탐색 단축키 테스트 목록을 탐색하려면 아래 화살표 및 위 화살표 키를 사용하세요 포커스가 다른 항목으로 이동하는 것을 볼 수 있어야 합니다 결론 이 튜토리얼에서는 callbackshortcuts 를 사용하여 flutter 애플리케이션에서 키보드 단축키를 구현하는 방법을 배웠습니다 back4app을 통합하여 데이터를 가져오고 표시했으며, 사용자가 키보드 단축키를 사용하여 앱과 상호작용할 수 있도록 하여 사용자 경험을 향상시켰습니다 주요 요점 callbackshortcuts 콜백 함수에 직접 키 조합을 매핑하여 키보드 단축키 추가를 간소화합니다 포커스 관리 위젯이 키보드 이벤트를 수신하는 데 필수적입니다 back4app 통합 데이터를 저장하고 검색할 수 있는 확장 가능한 백엔드를 제공합니다 다음 단계 단축키 확장 추가 기능을 위해 더 많은 키보드 단축키를 추가합니다 플랫폼별 수정자 플랫폼 간 수정 키의 차이를 처리합니다 (예 control vs command) 접근성 키보드 탐색 및 스크린 리더를 지원하여 앱이 접근 가능하도록 합니다 오류 처리 back4app에서 데이터를 가져올 때 오류 처리를 개선합니다 추가 리소스 back4app 문서 https //www back4app com/docs flutter 가이드용 parse sdk https //docs parseplatform org/flutter/guide/ flutter 공식 문서 https //flutter dev/docs callbackshortcuts 위젯 https //api flutter dev/flutter/widgets/callbackshortcuts class html 행복한 코딩 되세요!