라이브러리 (Library)
1. 역할
라이브러리는 특정 기능이나 작업을 쉽고 빠르게 수행할 수 있도록 미리 작성된 코드의 집합이다. 자주 사용하는 코드들을 모아둔 것으로, 개발 과정에서 반복적인 작업을 줄이고 효율적으로 프로그래밍할 수 있도록 돕는다.
2. 라이브러리를 사용하는 이유
- 효율성
- 필요한 기능만 선택하여 사용할 수 있다.
- 복잡한 기능을 간단하게 구현할 수 있다.
- 모든 코드를 직접 작성하지 않아도 된다.
- 재사용성
- 동일한 기능을 반복해서 구현할 필요 없이, 기존의 코드를 재사용할 수 있다.
- 가독성
- 코드가 간결해지고 가독성이 향상된다.
3. 라이브러리의 종류
라이브러리는 Dart SDK에 포함 여부에 따라 두 가지로 나뉜다.
(1) Dart SDK 표준 라이브러리
Dart SDK에 기본 포함된 라이브러리로, 플랫폼에 따라 지원하는 라이브러리가 다르다.
① 모든 플랫폼에서 사용 가능한 라이브러리
- dart:core : 기본 데이터 타입(int, double, String 등) 및 컬렉션 기능 제공 (자동 포함)
- dart:async : Future, Stream 등을 이용한 비동기 프로그래밍 지원
- dart:collection : 추가적인 컬렉션 자료구조 제공 (예: queue, linked list, hashmap 등)
- dart:convert : JSON, UTF-8 등의 인코딩/디코딩 기능 제공
- dart:developer : 디버깅 관련 기능 지원
- dart:math : 수학 연산 및 난수 생성 기능 제공
② Native 플랫폼(Mobile/Desktop)에서 사용 가능한 라이브러리
- dart:ffi : Dart에서 C API를 사용할 수 있도록 지원
- dart:io : 파일, 소켓, HTTP, 입출력 기능 제공
③ Web 플랫폼에서 사용 가능한 라이브러리
- dart:js_interop : JavaScript 및 브라우저 API와 상호 운용 가능
- dart:html : HTML 요소 및 웹 애플리케이션 리소스 제공
(2) Dart SDK에 포함되지 않은 외부 라이브러리
외부 개발자가 만든 라이브러리로, pub.dev에서 검색하여 사용할 수 있다.
① 많이 사용되는 외부 라이브러리
- cupertino_icons : Flutter의 Cupertino 스타일 아이콘 제공
- intl : 다국어 번역, 날짜 및 숫자 형식 변환 기능 지원
- shared_preferences : 간단한 데이터 저장 기능 제공
- url_launcher : URL을 여는 기능 지원
- image_picker : 카메라 및 갤러리에서 이미지 선택 기능 제공
- firebase_core / firebase_auth : Firebase 연동 및 인증 기능 지원
- google_fonts : Google Fonts 사용 기능 제공
- permission_handler : iOS 및 Android 권한 관리 기능 제공
- flutter_svg : SVG 렌더링 기능 제공
- cached_network_image : 네트워크 이미지 캐싱 기능 제공
- flutter_local_notifications : 로컬 알림 기능 제공
- path_provider : 파일 저장 경로 관리 기능 지원
- geolocator : GPS 위치 정보 활용 기능 지원
- dio : HTTP 네트워크 요청 기능 제공
4. 라이브러리 사용 방법
라이브러리는 import 키워드를 사용하여 불러온다.
import 'dart:html'; // Dart SDK 기본 라이브러리
import 'package:http/http.dart'; // 외부 라이브러리
import 'src/my_utils.dart'; // 프로젝트 내부 파일
(1) as를 사용하여 별칭 지정
import 'package:http/http.dart' as http;
(2) show를 사용하여 특정 기능만 가져오기
import 'package:lib1/lib1.dart' show foo;
(3) hide를 사용하여 특정 기능 제외
import 'package:lib2/lib2.dart' hide foo;
(4) deferred as를 사용한 지연 로딩 (Web 플랫폼 전용)
import 'package:greetings/hello.dart' deferred as hello;
Future<void> greet() async {
await hello.loadLibrary();
hello.printGreeting();
}
- 장점 : 초기 로딩 속도 향상 및 성능 최적화
- 주의 : deferred as를 사용하면 해당 라이브러리를 사용하기 전 loadLibrary()를 호출해야 한다.
'flutter앱개발과정' 카테고리의 다른 글
RPG 게임 - 트러블 슈팅(Stack Overflow 오류) (0) | 2025.03.20 |
---|---|
dart문법 - 비동기 프로그래밍과 Dart (0) | 2025.03.19 |
dart문법 - 예외처리 (0) | 2025.03.17 |
dart심화 - 객체지향 프로그래밍 (0) | 2025.03.14 |
콘솔 쇼핑몰 - 트러블 슈팅(Troubleshooting) (0) | 2025.03.13 |