kode program aplikasi to do list flutter
Berikut contoh kode Flutter sederhana untuk aplikasi To-Do List dengan fitur CRUD menggunakan SQLite. Struktur dasar ini mencakup:
Model Task
Database helper
UI untuk menampilkan dan menambahkan tugas
1. Tambahkan dependencies di pubspec.yaml:
dependencies:
flutter:
sdk: flutter
sqflite: ^2.3.0
path: ^1.8.3
2. Buat model task.dart
class Task {
int? id;
String title;
Task({this.id, required this.title});
Map<String, dynamic> toMap() {
return {
'id': id,
'title': title,
};
}
factory Task.fromMap(Map<String, dynamic> map) {
return Task(
id: map['id'],
title: map['title'],
);
}
}
3. Buat helper database db_helper.dart
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
import 'task.dart';
class DBHelper {
static final DBHelper _instance = DBHelper._();
static Database? _database;
DBHelper._();
factory DBHelper() => _instance;
Future<Database> get database async {
_database ??= await initDB();
return _database!;
}
Future<Database> initDB() async {
String path = join(await getDatabasesPath(), 'todo.db');
return openDatabase(
path,
version: 1,
onCreate: (db, version) {
return db.execute('''
CREATE TABLE tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT
)
''');
},
);
}
Future<int> insertTask(Task task) async {
final db = await database;
return await db.insert('tasks', task.toMap());
}
Future<List<Task>> getTasks() async {
final db = await database;
final List<Map<String, dynamic>> maps = await db.query('tasks');
return List.generate(maps.length, (i) => Task.fromMap(maps[i]));
}
Future<int> updateTask(Task task) async {
final db = await database;
return await db.update('tasks', task.toMap(), where: 'id = ?', whereArgs: [task.id]);
}
Future<int> deleteTask(int id) async {
final db = await database;
return await db.delete('tasks', where: 'id = ?', whereArgs: [id]);
}
}
4. Buat main.dart
import 'package:flutter/material.dart';
import 'task.dart';
import 'db_helper.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'To-Do List SQLite',
theme: ThemeData(primarySwatch: Colors.blue),
home: const TodoListPage(),
);
}
}
class TodoListPage extends StatefulWidget {
const TodoListPage({super.key});
@override
State<TodoListPage> createState() => _TodoListPageState();
}
class _TodoListPageState extends State<TodoListPage> {
final DBHelper _dbHelper = DBHelper();
final TextEditingController _controller = TextEditingController();
List<Task> _tasks = [];
@override
void initState() {
super.initState();
_refreshTasks();
}
void _refreshTasks() async {
final data = await _dbHelper.getTasks();
setState(() {
_tasks = data;
});
}
void _addTask(String title) async {
if (title.isEmpty) return;
await _dbHelper.insertTask(Task(title: title));
_controller.clear();
_refreshTasks();
}
void _deleteTask(int id) async {
await _dbHelper.deleteTask(id);
_refreshTasks();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('To-Do List')),
body: Column(
children: [
Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
children: [
Expanded(child: TextField(controller: _controller, decoration: const InputDecoration(hintText: 'Enter task'))),
IconButton(
icon: const Icon(Icons.add),
onPressed: () => _addTask(_controller.text),
),
],
),
),
Expanded(
child: ListView.builder(
itemCount: _tasks.length,
itemBuilder: (context, index) {
final task = _tasks[index];
return ListTile(
title: Text(task.title),
trailing: IconButton(
icon: const Icon(Icons.delete),
onPressed: () => _deleteTask(task.id!),
),
);
},
),
),
],
),
);
}
}
---
Kalau kamu butuh fitur edit (update), halaman detail, atau tampilan lebih estetik, tinggal bilang ya — bisa aku bantu lanjutin.

Mantap
BalasHapus