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?
bagus, inspiratif
BalasHapusmakasih pak
Hapus