본문 바로가기

flutter앱개발과정

dart문법- 라이브러리 정리

라이브러리 (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()를 호출해야 한다.