반응형

플러터(Flutter) 생태계에서 패키지와 플러그인은 코드 재사용성과 생산성을 극대화하는 핵심 도구입니다. 패키지는 순수 Dart 코드로 작성된 라이브러리, 플러그인은 Dart와 네이티브(Android/iOS 등) 코드를 모두 포함해 플랫폼 고유 기능을 확장할 수 있습니다.
아래에서 패키지/플러그인 개발부터 테스트, 배포까지 실전 절차를 단계별로 정리합니다.
패키지 vs 플러그인: 차이점
패키지(Package)
- Dart 코드만 포함
- 모든 플랫폼에서 동작
- 예: 날짜 계산, 문자열 처리 등
플러그인(Plugin)
- Dart + 네이티브(Android, iOS, Web 등) 코드 포함
- 플랫폼별 기능 연동(센서, 카메라, 파일 등)
- Method Channel 활용
패키지 개발 절차
패키지 프로젝트 생성
flutter create --template=package my_package- lib/ 폴더에 Dart 코드 작성
- pubspec.yaml에 의존성, 메타데이터 입력
코드 작성 및 내보내기
주요 기능을 lib/my_package.dart에 구현, 여러 파일을 만들었다면 export로 통합 관리
library my_package;
export 'src/feature1.dart';
export 'src/feature2.dart';테스트 코드 작성
test/ 폴더에 단위 테스트 작성
import 'package:flutter_test/flutter_test.dart';
import 'package:my_package/my_package.dart';
void main() {
test('기본 기능 테스트', () {
expect(MyClass().value, 42);
});
}예제(example) 앱 추가
flutter create example- example/lib/main.dart에서 패키지 사용법 샘플 구현
- example/pubspec.yaml에 본인 패키지 의존성 추가
플러그인 개발 절차
플러그인 프로젝트 생성
flutter create --org com.example --template=plugin --platforms=android,ios my_plugin필요시 -a kotlin(Android), -i swift(iOS) 등 언어 지정 가능
Dart API 정의
lib/my_plugin.dart에 MethodChannel로 API 정의
import 'package:flutter/services.dart';
class MyPlugin {
static const _channel = MethodChannel('my_plugin');
static Future getPlatformVersion() async {
return await _channel.invokeMethod('getPlatformVersion');
}
}네이티브 코드 구현
- Android(Kotlin/Java):
android/src/main/.../MyPlugin.kt- MethodChannel 핸들러에서 네이티브 기능 구현
- iOS(Swift/Obj-C):
ios/Classes/MyPlugin.swift- FlutterMethodChannel로 메서드 처리
- Web, macOS, Windows 등: 각 플랫폼별 구현 파일에서 연동
예제(example) 앱으로 테스트
example 폴더에서 실제 앱처럼 플러그인 연동 테스트
문서화 및 배포 준비
필수 문서 작성
- README.md: 설치법, 사용법, 예제, 지원 플랫폼 등 상세히 작성
- CHANGELOG.md: 버전별 변경 내역 기록
- LICENSE: MIT, Apache 등 오픈소스 라이선스 명시
pubspec.yaml
- name, description, version, homepage, repository 등 필수 정보 입력
- publish_to: 'https://pub.dev'로 설정
배포 및 관리
사전 점검
flutter pub publish --dry-run에러, 경고 없는지 확인
실제 배포
flutter pub publishpub.dev 계정 인증 후 배포 완료
버전 관리
기능 추가/수정 시 version 및 CHANGELOG.md 업데이트 후 재배포
베스트 프랙티스 & 팁
개발 핵심 포인트
- example 앱은 필수: 실제 사용 예시 제공
- 테스트 코드: 단위/위젯/통합 테스트로 신뢰성 확보
- 문서화: pub.dev에서 바로 보이므로 명확하고 친절하게
- 다국어 지원, null safety, 플랫폼별 예외 처리 등 최신 트렌드 반영
- 플러그인 개발 시 플랫폼 채널(MethodChannel) 네이밍 일관성 유지
고급 개발 팁
# pubspec.yaml 예시
name: my_awesome_package
description: A powerful Flutter package for awesome functionality
version: 1.0.0
homepage: https://github.com/username/my_awesome_package
repository: https://github.com/username/my_awesome_package
issue_tracker: https://github.com/username/my_awesome_package/issues
environment:
sdk: '>=3.0.0 =3.10.0"
dependencies:
flutter:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^3.0.0마무리
플러터 패키지와 플러그인 개발은 코드 재사용성, 커뮤니티 기여, 개발 생산성을 모두 높일 수 있는 최고의 방법입니다.
공식 문서와 예제, 테스트, 배포 절차를 잘 따라 패키지/플러그인을 만들어보길 추천합니다. 개발자 커뮤니티에 기여하면서 동시에 자신의 개발 실력도 크게 향상시킬 수 있는 좋은 기회가 될 것입니다.
반응형
'IT기술 > 플러터 (flutter)' 카테고리의 다른 글
| Flutter 프로젝트 폴더 구조 완벽 가이드: 확장 가능한 아키텍처 설계 (4) | 2025.07.19 |
|---|---|
| Flutter 접근성(Accessibility) 완벽 가이드: 모든 사용자를 위한 포용적 앱 개발 (4) | 2025.07.16 |
| Flutter Method Channel 완벽 가이드: 네이티브 코드와 양방향 통신 구현하기 (2) | 2025.07.15 |
| Flutter 앱 스토어 배포 완벽 가이드: 구글 플레이스토어 & 애플 앱스토어 등록 방법 (8) | 2025.07.13 |
| Flutter 테스트 완벽 가이드: 단위/위젯/통합 테스트로 앱 품질 극대화하기 (0) | 2025.07.12 |