Flutter 개발/Flutter 개념

[Flutter] 오픈소스 패키지 사용해보기

Jongung 2022. 3. 8. 15:48

PUB.DEV

Cross Flatform Framework의 장점을 꼽자면 ReactNative와 Flutter의 방대한 오픈 소스이다.

Flutter 개발자들 사이에선, Widget과 패키지를 레고처럼 조립하면 앱이 완성된다고 한다.

The official package repository for Dart and Flutter apps.

pub.dev는 dart와 flutter의 공식 패키지 저장소라고 볼 수 있다.

✔ Flutter 패키지 추가 방법

Example) permission_handler 패키지 설치하기

  1. pubspec.yaml 파일에 버전을 기록한다.
name: <APP_NAME>
description: A new Flutter project.

# 다음은 앱 버전 및 빌드 번호를 정의합니다.
# 버전은 점으로 구분된 세개의 숫자입니다. (예: 1.2.43) 
# 그 다음 빌드 번호가 `+` 뒤에 표시됩니다. (옵션입니다.)
# 버전과 빌드 번호는 각각 --build-name과 --build-number를 지정하여 오버라이딩할 수 있습니다.
# semver.org에서 버전관리에 대해 자세히 읽어보세요.
version: 1.0.0+1

environment:
  sdk: '>=2.0.0-dev.68.0 <3.0.0'

dependencies:
  flutter:
    sdk: flutter

  # 다음은 앱에 Cupertino 아이콘 폰트를 추가합니다.
  # iOS 스타일 아이콘으로 CupertinoIcons 클래스를 이용해서 사용하세요.
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter

# 이 파일의 일반적인 Dart에 관한 내용은 다음 페이지를 참고하세요.
# https://www.dartlang.org/tools/pub/pubspec

# 아래 내용은 플러터에만 해당합니다.
flutter:
  # 다음 라인은 머티리얼 아이콘 폰트가 앱에 포함됨을 의미하며 
  # 머티리얼 아이콘의 Icons 클래스를 사용할 수 있습니다.
  uses-material-design: true
  # 앱에 에셋을 추가하려면 다음과 같이 에셋 섹션을 추가하세요.
  # assets:
  #  - images/a_dot_burr.jpeg
  #  - images/a_dot_ham.jpeg
  # 이미지 에셋은 하나 이상의 해상도별 종류를 참조할 수 있습니다.
  # https://flutter.io/assets-and-images/#resolution-aware.
  # 패키지 의존성에 에셋을 추가하는 방법에 대한 자세한 내용은 아래 주소를 확인하세요.
  # https://flutter.io/assets-and-images/#from-packages
  # 앱에 사용자정의 폰트를 추가하려면 이 "flutter" 섹션에 폰트 섹션을 추가하세요.
  # 이 목록의 각 항목에는 폰트 패밀리 이름이 있는 "family" 키와 폰트의 에셋 및 
  # 기타 설명을 포함하는 "fonts" 키가 있어야합니다. 예를 들어,
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # 패키지 의존성의 폰트에 대한 자세한 내용은 아래 링크를 참조하세요.
  # https://flutter.io/custom-fonts/#from-packages

pubspec.yaml 파일 안에서 폰트를 넣거나, 에셋을 추가 할 수 있고, 앱 버전 설정 같은 것도 가능하다.

node와 비슷하게 개발 전용 패키지는 dev_dependencies에 일반 패키지는 dependencies에 기록해준다.

dependencies:
  flutter:
    sdk: flutter
  permission_handler: ^8.3.0

2. IDE terminal을 통해 pub get 또는, IntelliJ의 상단에 표시된 pub get을 통해 패키지 설치를 한다.

3. main.dart 위에 import 해준다.

import 'package:permission_handler/permission_handler.dart';

permission_handler.dart 파일에 있는 함수와 변수들을 가져온다.

4. Info.plist 파일에 문구를 추가 해준다.

<key>NSContactsUsageDescription</key>
<string>님 폰의 연락처 권한이 필요합니다 제발 주셈</string>

다음과 같이 Widget을 제외한 모든 것을 패키지로 개발하여야 한다.

 

더보기

2만 개 이상의 패키지가 현재 존재하여 수많은 오픈 소스들로 쉽게 개발 할 수 있다는 장점도 있지만, 구현 하고 싶은 기능이 패키지로 존재 하지 않을 때 개발하기 쉽지 않다는 점이 단점이 됩니다.

 

레퍼런스