packagepublibraryMahir5 mnt baca

Package dan pub.dev

Memakai library orang lain: pubspec.yaml, dart pub add, dan import package.

Jangan tulis ulang yang sudah ada

Butuh format tanggal cantik? HTTP request? Hampir pasti sudah ada package-nya. pub.dev adalah gudang resmi package Dart/Flutter dengan ribuan library gratis. Pakai package = hemat waktu + kode teruji banyak orang.

pubspec.yaml: daftar belanja proyek

Setiap proyek Dart punya file pubspec.yaml yang mendaftarkan package yang dipakai:

yaml
name: belajar_dart
description: Proyek latihan Dart
version: 1.0.0

environment:
  sdk: ^3.0.0

dependencies:
  http: ^1.2.0
  intl: ^0.19.0

dev_dependencies:
  test: ^1.24.0
  • dependencies: package yang dibutuhkan aplikasi saat jalan
  • dev_dependencies: cuma butuh saat development (testing, dll)
  • ^1.2.0: artinya versi 1.2.0 sampai sebelum 2.0.0 (boleh update minor otomatis)

Menambah package

Cara modern pakai terminal:

dart pub add http

Perintah ini otomatis menambah ke pubspec.yaml dan mengunduh package-nya. Untuk menghapus: dart pub remove http. Setelah ubah pubspec manual, jalankan dart pub get untuk sinkronisasi.

Memakai package: contoh http

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

void main() async {
  var url = Uri.parse('https://jsonplaceholder.typicode.com/posts/1');
  var response = await http.get(url);

  if (response.statusCode == 200) {
    print('Berhasil! Panjang data: ${response.body.length}');
  } else {
    print('Gagal: ${response.statusCode}');
  }
}

Catatan: contoh ini butuh package http terinstall, jadi tidak bisa jalan langsung di DartPad polos (DartPad punya batasan package tertentu). Tapi polanya persis seperti ini di proyek lokal.

Catatan teknis: Import dengan as http disebut prefix import. Tanpa prefix, nama fungsi get bisa bentrok dengan fungsi lain. Selalu pakai prefix untuk package pihak ketiga, ini konvensi komunitas Dart.

Memakai package: contoh intl

Package intl untuk format tanggal dan angka sesuai locale:

dart
// butuh: dart pub add intl
import 'package:intl/intl.dart';

void main() {
  var sekarang = DateTime.now();

  print(DateFormat('dd MMMM yyyy').format(sekarang));
  print(DateFormat('EEEE, d/M/y').format(sekarang));

  var rupiah = NumberFormat.currency(locale: 'id_ID', symbol: 'Rp');
  print(rupiah.format(1500000)); // Rp1.500.000
}

Menilai package sebelum dipakai

Tidak semua package berkualitas. Cek di pub.dev:

  1. Likes dan pub points: skor kualitas dari analisis otomatis
  2. Update terakhir: hindari yang tidak diupdate lebih dari 1 tahun
  3. Publisher verified: badge centang berarti pemilik terverifikasi
  4. Null safety: pastikan mendukung Dart 3
  5. Popularitas: dipakai banyak orang berarti bug cepat ketahuan

Aturan praktis: untuk kebutuhan umum (http, intl, path), pilih package resmi dari tim Dart atau yang likes-nya ribuan.

Struktur import yang rapi

dart
import 'dart:async';              // 1. SDK Dart dulu
import 'dart:convert';

import 'package:http/http.dart' as http;  // 2. package pihak ketiga
import 'package:intl/intl.dart';

import 'model_user.dart';         // 3. file proyek sendiri
import 'helper.dart';

Urutkan: dart: dulu, lalu package:, lalu file lokal. Editor (VS Code + extension Dart) bisa merapikan otomatis dengan "Organize Imports".