async와 await를 사용하는 이유async와 await는 비동기 프로그래밍을 지원하기 위한 Dart의 키워드입니다. onDismissed에서 비동기 작업(예: 데이터베이스에서 일정 삭제)을 처리하기 위해 사용됩니다.
onDismissed와 async/await 사용 부분onDismissed: (DismissDirection direction) async {
await GetIt.I<AppDatabase>().removeSchedule(
schedule.id,
);
setState(() {
// UI를 업데이트
});
},
async를 사용하나요?removeSchedule(schedule.id) 메서드는 데이터베이스에서 데이터를 삭제하는 작업을 수행하며, 이는 시간이 걸리는 작업(비동기 작업)입니다.async를 붙이면 이 함수가 비동기 작업을 처리할 준비가 되었다는 것을 Dart에 알려줍니다.await를 사용하나요?await는 비동기 작업이 완료될 때까지 기다립니다.GetIt.I<AppDatabase>().removeSchedule(schedule.id)가 완료될 때까지 다음 줄(setState())로 넘어가지 않습니다.onDismissed가 호출됨:
사용자가 특정 스케줄을 스와이프하여 삭제하면, onDismissed가 실행됩니다.
비동기 작업 시작:
await GetIt.I<AppDatabase>().removeSchedule(schedule.id);
await).UI 업데이트:
setState(() {
// UI를 다시 그려 삭제된 상태 반영
});
setState는 Flutter에서 화면을 다시 그리는 데 사용됩니다.async와 await 없이 코드를 작성하면?onDismissed: (DismissDirection direction) {
GetIt.I<AppDatabase>().removeSchedule(schedule.id); // 비동기 호출
setState(() {
// UI 업데이트
});
},
비동기 작업이 완료되기 전에 setState() 실행:
결과를 기다리지 않음:
비동기 작업은 시간이 오래 걸릴 수 있는 작업(예: 네트워크 요청, 파일 I/O, 데이터베이스 작업 등)을 처리하기 위해 필요합니다. 이 작업들을 동기적으로 처리하면 UI가 멈추는 문제(앱이 "프리징"되는 현상)가 발생할 수 있습니다.
async: 비동기 작업을 수행하는 함수임을 Dart에 알립니다.await: 비동기 작업이 완료될 때까지 기다립니다.async/await는 코드 가독성과 비동기 흐름 관리를 동시에 제공하므로, Flutter 앱 개발에서 매우 유용합니다!