kode program Flutter untuk aplikasi To-Do List dengan fitur CRUD menggunakan database SQLite

 

Berikut adalah contoh kode program Flutter untuk aplikasi To-Do List dengan fitur CRUD menggunakan database SQLite:

1. Tambahkan Dependency di pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  sqflite: ^2.3.0
  path: ^1.8.0
  path_provider: ^2.1.1

2. Model ToDo

class ToDo {
  final int? id;
  final String title;
  final String description;

  ToDo({this.id, required this.title, required this.description});

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'title': title,
      'description': description,
    };
  }

  factory ToDo.fromMap(Map<String, dynamic> map) {
    return ToDo(
      id: map['id'],
      title: map['title'],
      description: map['description'],
    );
  }
}

3. Database Helper

import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';
import 'todo.dart';

class DBHelper {
  static Database? _db;

  Future<Database> get db async {
    if (_db != null) return _db!;
    _db = await initDB();
    return _db!;
  }

  Future<Database> initDB() async {
    Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, 'todo.db');

    return await openDatabase(path, version: 1, onCreate: (db, version) async {
      await db.execute('''
        CREATE TABLE todos (
          id INTEGER PRIMARY KEY AUTOINCREMENT,
          title TEXT,
          description TEXT
        )
      ''');
    });
  }

  Future<int> insertToDo(ToDo todo) async {
    final dbClient = await db;
    return await dbClient.insert('todos', todo.toMap());
  }

  Future<List<ToDo>> getToDos() async {
    final dbClient = await db;
    List<Map<String, dynamic>> maps = await dbClient.query('todos');
    return maps.map((map) => ToDo.fromMap(map)).toList();
  }

  Future<int> updateToDo(ToDo todo) async {
    final dbClient = await db;
    return await dbClient.update('todos', todo.toMap(),
        where: 'id = ?', whereArgs: [todo.id]);
  }

  Future<int> deleteToDo(int id) async {
    final dbClient = await db;
    return await dbClient.delete('todos', where: 'id = ?', whereArgs: [id]);
  }
}

4. UI dan CRUD di main.dart

Jika kamu ingin, saya bisa lanjutkan dengan membuat halaman UI-nya sekalian (daftar tugas, form tambah/edit, dll). Mau dilanjutkan ke UI-nya?

Komentar

Posting Komentar

Postingan populer dari blog ini

🚀 Project Flutter Web: Lokasi Mie Gacoan dengan Google Maps & WhatsApp 📍📱

📱 Aplikasi Jadwal Guru Akatsuki - Solusi Simpel Atur Jadwal Mengajar 🎯