상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Flutter에서 비동기 프로그래밍은 어떻게 하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Fl<a href='https://sangseek.com/sangseeks/utter/ko'>utter</a>에서 비동기 프로그래밍은 Dart 언어의 비동기 기능을 활용하여 구현됩니다. Dart는 비동기 프로그래밍을 지원하기 위해 `Future`, `async`, `await` 키워드를 제공합니다. 이러한 기능을 통해 Flutter <a href='https://sangseek.com/sangseeks/애플/ko'>애플</a>리케이션에서 네트워크 요청, 파일 I/O, 데이터베이스 <a href='https://sangseek.com/sangseeks/쿼리/ko'>쿼리</a> 등 시간이 걸리는 작업을 효율적으로 처리할 수 있습니다. 1. Future `Future`는 비동기 작업의 결과를 나타내는 객체입니다. 비동기 작업이 완료되면 `Future`는 결과값을 반환하거나 오류를 발생시킵니다. `Future`는 두 가지 상태를 가집니다: - 대기 중 (Pending) : 작업이 아직 완료되지 않은 상태. - 완료 (Completed) : 작업이 완료되어 결과값을 반환하거나 오류가 발생한 상태. ```dart Future<String> fetchData() { return Future.delayed(Duration(seconds: 2), () { return '데이터 로드 완료'; }); } ``` 위의 예제에서 `fetchData` 함수는 2초 후에 문자열을 반환하는 `Future`를 생성합니다. 2. async와 await `async`와 `await` 키워드는 비동기 코드를 더 간결하고 읽기 쉽게 만들어줍니다. `async` 키워드를 사용하여 비동기 함수를 정의하고, `await` 키워드를 사용하여 `Future`의 결과를 기다릴 수 있습니다. ```dart Future<<a href='https://sangseek.com/sangseeks/void/ko'>void</a>> loadData() async { print('데이터 로드 시작'); String data = await fetchData(); print(data); } ``` 위의 예제에서 `loadData` 함수는 `fetchData`의 결과를 기다린 후, 결과를 출력합니다. `await` 키워드는 `Future`가 완료될 때까지 코드 실행을 일시 중지합니다. 3. 에러 처리 비동기 프로그래밍에서 에러 처리는 매우 중요합니다. `tr<a href='https://sangseek.com/sangseeks/y-catch/ko'>y-catch</a>` 블록을 사용하여 비동기 함수 내에서 발생할 수 있는 오류를 처리할 수 있습니다. ```dart Future<void> loadData() async { try { print('데이터 로드 시작'); String data = await fetchData(); print(data); } catch (e) { print('오류 발생: $e'); } } ``` 위의 예제에서 `fetchData` 함수가 오류를 발생시키면, `catch` 블록에서 해당 오류를 처리합니다. 4. 비동기 프로그래밍의 활용 Flutter 애플리케이션에서 비동기 프로그래밍은 주로 다음과 같은 상황에서 사용됩니다: - 네트워크 요청 : REST API와 통신하여 데이터를 가져올 때. - 파일 I/O : 파일을 읽거나 쓸 때. - 데이터베이스 쿼리 : SQLite와 같은 데이터베이스에서 데이터를 조회할 때. 예를 들어, HTTP 요청을 통해 데이터를 가져오는 경우는 다음과 같이 구현할 수 있습니다. ```dart import 'package:http/http.dart' as http; import 'dart:convert'; Future<void> fetchUserData() async { final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/users')); if (response.statusCode == 200) { List<dynamic> users = json.decode(response.body); print(users); } else { throw Exception('데이터 로드 실패'); } } ``` 5. FutureBuilder Flutter에서는 `FutureBuilder` 위젯을 사용하여 비동기 작업의 결과를 UI에 쉽게 반영할 수 있습니다. `FutureBuilder`는 `Future`와 함께 사용되며, `Future`의 상태에 따라 UI를 업데이트합니다. ```dart class UserList extends StatelessWidget { @override Widget build(BuildContext context) { return FutureBuilder( future: fetchUserData(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return CircularProgressIndicator(); } else if (snapshot.hasError) { return Text('오류: ${snapshot.error}'); } else { // 데이터 처리 및 UI 구성 return ListView.builder( itemCount: snapshot.data.length, itemBuilder: (context, index) { return ListTile(title: Text(snapshot.data[index]['name'])); }, ); } }, ); } } ``` 결론 Flutter에서 비동기 프로그래밍은 `Future`, `async`, `await`를 통해 간단하고 직관적으로 구현할 수 있습니다. 이러한 비동기 기능을 활용하면 사용자 경험을 향상시키고, 애플리케이션의 성능을 최적화할 수 있습니다. 비동기 작업의 결과를 UI에 반영하기 위해 `FutureBuilder`를 사용하는 것도 좋은 방법입니다. 비동기 프로그래밍을 잘 활용하면 Flutter 애플리케이션의 반응성과 효율성을 크게 향상시킬 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기