본문 바로가기
Dart/Dart Programming language

[추가학습] Dart 패키지 사용 / 자주 사용되는 Dart 패키지 소개 (예: http, provider, json_serializable)

by Maccrey Coding 2024. 9. 17.
반응형

 

Dart는 Flutter와 함께 강력한 모바일, 웹, 서버 애플리케이션 개발 언어로 널리 사용됩니다.

이때 개발 속도를 높이고 기능을 확장하기 위해 다양한 Dart 패키지를 사용할 수 있는데, 이번 포스팅에서는 초보자를 위한 Dart 패키지 사용법자주 사용되는 패키지를 소개하겠습니다.

1. Dart 패키지란 무엇인가?

Dart 패키지는 프로젝트에서 사용할 수 있는 외부 라이브러리나 도구 모음입니다.

이 패키지를 사용하면 개발자가 코드를 반복적으로 작성할 필요 없이 기존의 검증된 코드를 가져와 사용함으로써 시간을 절약하고 코드 품질을 높일 수 있습니다.

Dart의 패키지들은 주로 pub.dev라는 공식 패키지 저장소에서 관리됩니다.

2. Dart 패키지 사용법

패키지를 프로젝트에 추가하는 과정은 매우 간단합니다. Dart 또는 Flutter 프로젝트에서 패키지를 설치하고 사용하는 기본적인 단계는 다음과 같습니다.

1) 패키지 추가

pubspec.yaml 파일에 사용하려는 패키지를 추가합니다. 예를 들어 http 패키지를 추가하려면 아래와 같이 작성합니다.

dependencies:
  http: ^0.14.0

 

2) 패키지 설치

터미널에서 다음 명령어를 실행하여 패키지를 설치합니다.

flutter pub get

이 명령은 pubspec.yaml에 정의된 패키지를 설치합니다.

3) 패키지 사용

설치된 패키지는 프로젝트의 Dart 파일에서 import 문을 사용하여 불러옵니다. 예를 들어, http 패키지를 사용하려면 다음과 같이 코드 상단에 추가합니다.

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

3. 자주 사용되는 Dart 패키지 3가지

1) http

http 패키지는 HTTP 요청을 간편하게 처리할 수 있도록 돕는 Dart 패키지입니다. API 호출, 데이터 전송, 파일 다운로드 등 다양한 네트워크 작업을 수행할 때 유용합니다.

2) provider

provider는 상태 관리를 위한 패키지로, Flutter 애플리케이션에서 상태(데이터)를 효율적으로 공유하고 업데이트하는 데 사용됩니다. UI와 로직을 분리하는데 유용하며, 특히 중소규모 앱에서 많이 사용됩니다.

3) json_serializable

json_serializable은 JSON 데이터를 Dart 객체로 변환하거나 그 반대로 변환하는 작업을 자동화해주는 패키지입니다. 특히, 서버나 API에서 가져온 JSON 데이터를 처리할 때 매우 유용합니다.

4. 각 패키지의 설치 방법 및 코드 예제

1) http 패키지

설치 방법:

pubspec.yaml 파일에 다음 내용을 추가합니다.

dependencies:
  http: ^0.14.0

터미널에서 패키지를 설치합니다.

flutter pub get

사용 예제

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

void fetchData() async {
  final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts'));
  
  if (response.statusCode == 200) {
    print('데이터 로드 성공: ${response.body}');
  } else {
    print('데이터 로드 실패: ${response.statusCode}');
  }
}

void main() {
  fetchData();
}

설명: 이 코드는 http 패키지를 사용하여 JSON 데이터를 가져오는 간단한 예제입니다. await를 사용해 비동기적으로 데이터를 가져온 후, 상태 코드에 따라 성공 또는 실패 메시지를 출력합니다.

2) provider 패키지

설치 방법

pubspec.yaml 파일에 다음 내용을 추가합니다.

dependencies:
  provider: ^6.0.0

터미널에서 패키지를 설치합니다.

flutter pub get

사용 예제

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

void main() {
  runApp(
    ChangeNotifierProvider(
      create: (context) => Counter(),
      child: MyApp(),
    ),
  );
}

class Counter with ChangeNotifier {
  int _count = 0;

  int get count => _count;

  void increment() {
    _count++;
    notifyListeners();
  }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Provider Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                'Button pressed:',
              ),
              Consumer<Counter>(
                builder: (context, counter, child) => Text(
                  '${counter.count}',
                  style: Theme.of(context).textTheme.headline4,
                ),
              ),
            ],
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            context.read<Counter>().increment();
          },
          child: Icon(Icons.add),
        ),
      ),
    );
  }
}

설명: 이 코드는 provider 패키지를 사용한 간단한 카운터 애플리케이션입니다. ChangeNotifierProvider를 사용해 상태를 관리하고, 버튼을 누를 때마다 카운터가 증가하는 동작을 구현했습니다.


3) json_serializable 패키지

설치 방법.

pubspec.yaml 파일에 다음 내용을 추가합니다.

dependencies:
  json_serializable: ^6.0.0
  build_runner: ^2.1.0

터미널에서 패키지를 설치한 후 build_runner를 사용하여 코드를 생성합니다.

flutter pub get
flutter pub run build_runner build

사용 예제

import 'package:json_annotation/json_annotation.dart';

part 'user.g.dart';

@JsonSerializable()
class User {
  final String name;
  final int age;

  User({required this.name, required this.age});

  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);

  Map<String, dynamic> toJson() => _$UserToJson(this);
}

void main() {
  // JSON 데이터를 Dart 객체로 변환
  Map<String, dynamic> userData = {
    'name': 'Alice',
    'age': 25,
  };

  User user = User.fromJson(userData);
  print('사용자 이름: ${user.name}, 나이: ${user.age}');

  // Dart 객체를 JSON 데이터로 변환
  Map<String, dynamic> json = user.toJson();
  print('JSON 데이터: $json');
}

설명: 이 코드는 json_serializable을 사용해 JSON 데이터를 Dart 객체로 변환하거나, Dart 객체를 JSON으로 변환하는 과정을 보여줍니다. @JsonSerializable 어노테이션을 사용해 자동으로 JSON 변환 코드를 생성합니다.

 

이번 포스팅에서는 Dart 프로젝트에서 자주 사용되는 http, provider, json_serializable 패키지를 소개하고, 각 패키지의 설치 및 사용 방법을 간단한 코드 예제와 함께 설명했습니다.

이 세 가지 패키지는 Dart 및 Flutter 개발에서 매우 유용하며, 프로젝트의 성능과 개발 효율성을 크게 향상시킬 수 있습니다.

 

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

반응형