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:
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.0dependencies: package yang dibutuhkan aplikasi saat jalandev_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
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 httpdisebut prefix import. Tanpa prefix, nama fungsigetbisa 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:
// 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:
- Likes dan pub points: skor kualitas dari analisis otomatis
- Update terakhir: hindari yang tidak diupdate lebih dari 1 tahun
- Publisher verified: badge centang berarti pemilik terverifikasi
- Null safety: pastikan mendukung Dart 3
- 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
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".