More
플러터에서 Future.wait와 Back4app을 사용하여 비동기 작업 최적화하는 방법
7 분
소개 비동기 프로그래밍은 현대 앱 개발에서 필수적이며, 특히 여러 소스에서 데이터를 가져오거나 여러 네트워크 요청을 수행할 때 중요합니다 그러나 여러 비동기 호출을 효율적으로 처리하는 것은 도전적일 수 있습니다 flutter에서는 future wait 메서드가 여러 futures 를 관리하는 강력한 방법을 제공합니다 이를 통해 앱은 여러 비동기 작업을 동시에 효율적으로 대기할 수 있습니다 이 튜토리얼에서는 flutter에서 future wait 를 사용하여 여러 비동기 작업을 처리할 때 앱의 성능을 최적화하는 방법을 배웁니다 이 기술을 back4app과 통합하여 백엔드에서 동시 데이터 가져오기를 수행하고 결과를 저장하며 사용자 대기 시간을 크게 줄일 수 있습니다 전제 조건 이 튜토리얼을 완료하려면 다음이 필요합니다 back4app 계정 back4app com에서 무료 계정에 가입하세요 https //www back4app com 로컬 머신에 flutter 개발 환경이 설정되어 있어야 합니다 아직 설정하지 않았다면 flutter 설치 가이드를 따르세요 https //flutter dev/docs/get started/install flutter에서 비동기 프로그래밍에 대한 기본 지식과 back4app을 백엔드 서비스로 사용하는 방법 back4app이 처음이라면 back4app 시작하기 가이드를 확인하세요 https //www back4app com/docs/get started/welcome 1단계 – back4app 백엔드 설정하기 back4app 프로젝트 생성하기 back4app 계정 https //dashboard back4app com/ 에 로그인하고 새 프로젝트를 생성합니다 parse 클래스 생성하기 back4app 프로젝트에서 task 와 project 라는 두 개의 새로운 parse 클래스를 생성합니다 task 클래스는 다음과 같은 필드를 가져야 합니다 name (string) 및 completed (boolean) project 클래스는 다음과 같은 필드를 가져야 합니다 title (string) 및 description (string) 샘플 데이터 추가하기 이 클래스에 샘플 데이터를 채워 넣습니다 이 데이터는 flutter 앱에서 future wait 를 사용하여 동시에 가져올 것입니다 back4app 자격 증명 가져오기 프로젝트 설정으로 이동하여 애플리케이션 id와 클라이언트 키를 가져옵니다 이 정보는 flutter 앱을 back4app에 연결하는 데 필요합니다 2단계 – flutter 프로젝트 설정하기 새 flutter 프로젝트 생성하기 터미널 또는 명령 프롬프트를 열고 다음을 실행합니다 의존성 추가하기 pubspec yaml 을 열고 다음 의존성을 추가합니다 앱에서 parse 초기화하기 lib/main dart , parse sdk를 가져오고 main 함수에서 초기화합니다 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()); 'your back4app app id'와 'your back4app client key' 를 실제 back4app 자격 증명으로 교체하세요 3단계 – future wait 를 사용하여 데이터 가져오기 taskprojectscreen 위젯 생성 lib/main dart , 두 개의 task 와 project 클래스를 동시에 가져오는 새로운 위젯을 추가하세요 class taskprojectscreen extends statefulwidget { @override taskprojectscreenstate createstate() => taskprojectscreenstate(); } class taskprojectscreenstate extends state\<taskprojectscreen> { list\<parseobject>? tasks; list\<parseobject>? projects; string? errormessage; @override void initstate() { super initstate(); fetchdata(); } future\<void> fetchdata() async { try { // fetch tasks and projects concurrently final futures = \[ gettasks(), getprojects(), ]; final results = await future wait(futures); setstate(() { tasks = results\[0] as list\<parseobject>; projects = results\[1] as list\<parseobject>; }); } catch (e) { setstate(() { errormessage = e tostring(); }); } } future\<list\<parseobject>> gettasks() async { final query = querybuilder\<parseobject>(parseobject('task')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { throw exception('failed to load tasks'); } } future\<list\<parseobject>> getprojects() async { final query = querybuilder\<parseobject>(parseobject('project')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { throw exception('failed to load projects'); } } @override widget build(buildcontext context) { if (errormessage != null) { return center(child text('error $errormessage')); } if (tasks == null || projects == null) { return center(child circularprogressindicator()); } return listview( children \[ listtile(title text('tasks')), tasks! map((task) => listtile( title text(task get\<string>('name') ?? 'no name'), subtitle text('completed ${task get\<bool>('completed') ? 'yes' 'no'}'), )), listtile(title text('projects')), projects! map((project) => listtile( title text(project get\<string>('title') ?? 'no title'), subtitle text(project get\<string>('description') ?? 'no description'), )), ], ); } } 이 위젯은 future wait 를 사용하여 작업과 프로젝트를 동시에 가져와 총 대기 시간을 줄입니다 4단계 – 앱 테스트 및 실행 앱을 다음을 사용하여 실행하세요 flutter run 화면에 작업 및 프로젝트 목록이 표시되어야 합니다 두 데이터 세트는 동시에 가져와지므로 데이터 검색 프로세스가 더 빠르고 효율적입니다 결론 이 튜토리얼에서는 future wait 를 사용하여 flutter 앱에서 비동기 작업을 최적화하는 방법을 배웠습니다 여러 소스에서 데이터를 동시에 가져오고 back4app과 통합함으로써 앱의 반응성을 높이고 사용자 대기 시간을 줄였습니다 강력한 백엔드인 back4app과 함께 future wait 를 사용하면 여러 비동기 작업을 효율적으로 관리하고 flutter 애플리케이션의 성능을 향상시킬 수 있습니다 flutter와 함께 back4app을 사용하는 방법에 대한 자세한 내용은 back4app flutter 문서 https //www back4app com/docs/flutter/overview 코딩을 즐기세요!