DEV Community

Joenathan Haganta Ginting
Joenathan Haganta Ginting

Posted on

πŸš€ Mengenal Database dan Local Storage di Flutter! πŸ“±πŸ’Ύ

Dalam pengembangan aplikasi Flutter, penyimpanan data menjadi aspek penting yang harus diperhatikan. Terdapat beberapa metode penyimpanan data, di antaranya Database dan Local Storage.

1. Database di Flutter (sqflite)

sqflite adalah paket yang digunakan untuk mengelola database SQLite di Flutter. SQLite adalah database ringan yang cocok untuk aplikasi mobile.

Instalasi

Tambahkan dependensi berikut di pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  sqflite: ^2.3.0
  path_provider: ^2.1.2
  path: ^1.8.3
Enter fullscreen mode Exit fullscreen mode

Implementasi sqflite

Berikut contoh CRUD menggunakan SQLite:

import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';

class DatabaseHelper {
  static final DatabaseHelper instance = DatabaseHelper._init();
  static Database? _database;
  DatabaseHelper._init();

  Future<Database> get database async {
    if (_database != null) return _database!;
    _database = await _initDB('app.db');
    return _database!;
  }

  Future<Database> _initDB(String filePath) async {
    final dbPath = await getDatabasesPath();
    final path = join(dbPath, filePath);
    return await openDatabase(path, version: 1, onCreate: _createDB);
  }

  Future<void> _createDB(Database db, int version) async {
    await db.execute('''
      CREATE TABLE users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL
      )
    ''');
  }

  Future<int> insertUser(Map<String, dynamic> user) async {
    final db = await database;
    return await db.insert('users', user);
  }

  Future<List<Map<String, dynamic>>> getUsers() async {
    final db = await database;
    return await db.query('users');
  }
}
Enter fullscreen mode Exit fullscreen mode

Penjelasan Kode

DatabaseHelper: Singleton untuk manajemen database.
_initDB: Menginisialisasi database.
_createDB: Membuat tabel users.
insertUser: Menambahkan data user ke dalam database.
getUsers: Mengambil semua data user.

2. Local Storage di Flutter (shared_preferences)

Jika ingin menyimpan data sederhana seperti konfigurasi atau preferensi pengguna, shared_preferences adalah pilihan yang tepat.

Instalasi

Tambahkan dependensi berikut di pubspec.yaml:

dependencies:
  shared_preferences: ^2.2.2
Enter fullscreen mode Exit fullscreen mode

Implementasi shared_preferences

import 'package:shared_preferences/shared_preferences.dart';

class LocalStorage {
  Future<void> saveData(String key, String value) async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.setString(key, value);
  }

  Future<String?> getData(String key) async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.getString(key);
  }
}
Enter fullscreen mode Exit fullscreen mode

Penjelasan Kode

saveData: Menyimpan data berupa key-value ke SharedPreferences.
getData: Mengambil data yang telah disimpan.

Kesimpulan
Gunakan sqflite jika membutuhkan database relasional dengan operasi kompleks.
Gunakan shared_preferences untuk menyimpan data sederhana seperti konfigurasi aplikasi.
Dengan memilih metode penyimpanan yang tepat, aplikasi Flutter dapat berjalan lebih efisien dan sesuai kebutuhan pengguna.

Top comments (0)