[ Dart&Flutter ] Dart 라이브러리 & 패키지 관리 심화 학습

Dart의 라이브러리 및 패키지 관리를 어떻게 하면 좋을지에 대한 내용입니다. 모든 컴퓨터 언어는 라이브러리를 사용하는 것이 일반적인 방법입니다. 오늘은 Dart Library를 어떻게 관리 할지 Dart Package를 어떻게 관리할지를 배워 보도록 하겠습니다.


[ Dart&Flutter ] Dart 라이브러리 & 패키지 관리 심화 학습
  [ Dart&Flutter ] Dart 라이브러리 & 패키지 관리 심화 학습


 

📚 Dart 라이브러리 & 패키지 관리 심화 학습

내 코드도 나누고, 다른 사람 코드도 불러오고!
규모 있는 앱을 만들기 위한 기본 중의 기본



✅ 1. 라이브러리 분할 ( import, export, part )

📘 개념 설명

  • import: 다른 파일(또는 패키지)의 코드를 가져올 때 사용

  • export: 다른 파일에서 쉽게 쓸 수 있도록 내보내기

  • part / part of: 하나의 라이브러리를 여러 파일로 나누는 방식




🏆 실습 예제 1: import로 다른 파일 사용하기


📄 math_utils.dart

int add(int a, int b) => a + b;

📄 main.dart

import 'math_utils.dart';

void main() {
  print('3 + 5 = ${add(3, 5)}');
}

✅ 출력:

3 + 5 = 8
🔔 import 덕분에 다른 파일의 함수를 쉽게 사용 가능!




🏆 실습 예제 2: export로 여러 기능 묶기


📄 tools/math.dart

int multiply(int a, int b) => a * b;

📄 tools/util.dart

String greet(String name) => '안녕, $name!';

📄 tools/all.dart

export 'math.dart';
export 'util.dart';

📄 main.dart

import 'tools/all.dart';

void main() {
  print(multiply(2, 3));
  print(greet('지훈'));
}

✅ 출력:

6  
안녕, 지훈!



✅ 2. pubspec.yaml 이해하기

📘 개념 설명


pubspec.yaml 파일은 Dart/Flutter 프로젝트의 설정 파일입니다.

  • 앱 이름, 버전, 의존성(사용할 외부 패키지) 등을 정의해요.

name: my_app
version: 1.0.0

dependencies:
  http: ^0.14.0
🔔 dependencies 아래에 적힌 패키지는 pub.dev에서 자동으로 다운로드됩니다.




🏆 실습 예제 1: pubspec.yaml 구성 확인하기

name: dart_library_demo
description: A simple demo

dependencies:
  collection: ^1.17.0

✅ 설명: collection이라는 외부 라이브러리를 사용하겠다는 뜻이에요.



🏆 실습 예제 2: 의존성 추가 후 코드 사용

import 'package:collection/collection.dart';

void main() {
  var list = [1, 2, 3, 4];
  print('합계: ${list.sum}');
}

✅ 출력:

합계: 10
pubspec.yaml에서 선언했기 때문에 외부 패키지 함수 사용 가능!




✅ 3. 외부 패키지 사용법 (pub.dev)

📘 개념 설명

  • pub.dev는 Dart와 Flutter에서 사용할 수 있는 공식 패키지 저장소예요.

  • 필요한 기능이 있다면 직접 만들지 않고 패키지를 검색해서 가져다 쓰면 됩니다.




🏆 실습 예제 1: pub.dev에서 패키지 찾기


🔗 https://pub.dev


  • 예: http 패키지 검색 → 최신 버전 확인 → pubspec.yaml에 복사해서 붙여넣기

dependencies:
  http: ^0.14.0





🏆 실습 예제 2: 외부 API 호출하기 (기초 예)

import 'package:http/http.dart' as http;

void main() async {
  var res = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/todos/1'));
  print(res.body);
}

✅ 출력 (예시):

{"userId":1,"id":1,"title":"delectus aut autem","completed":false}
외부 데이터를 가져올 때도 pub.dev 패키지 덕분에 간단하게 처리 가능!




✅ 4. 의존성 관리 ( dependencies, dev_dependencies )

📘 개념 설명

항목

설명

dependencies

앱 실행에 필요한 패키지

dev_dependencies

개발 중에만 필요한 도구 (예: 테스트, 코드 생성기)



🏆 실습 예제 1: dev_dependencies 추가 예시

dev_dependencies:
  lints: ^2.1.0

  • 이 설정을 통해 코드 스타일 검사를 쉽게 적용할 수 있어요.



🏆 실습 예제 2: dependency_overrides로 버전 고정

dependencies:
  http: any

dependency_overrides:
  http: 0.14.0

  • 여러 패키지가 http의 다른 버전을 원할 때 내가 원하는 버전으로 고정할 수 있어요.




🎓 마무리 요약

기능

설명

import / export

다른 파일이나 기능 가져오기 / 내보내기

pubspec.yaml

앱 이름, 버전, 사용 패키지 설정

pub.dev

Dart/Flutter 공식 패키지 저장소

dependencies

앱 실행 시 필요한 패키지

dev_dependencies

개발 전용 도구 (테스트, 빌드 등)




💡 실전 활용 예시

  • 코드 파일을 model.dart, utils.dart 등으로 분할

  • 외부 API 호출을 위해 http, dio 패키지 사용

  • 상태 관리: provider, riverpod 등 활용

  • json 파싱: json_annotation, build_runner 설정


댓글 쓰기