Building a To-Do App in Flutter
A to-do app is one of the best beginner-friendly projects to learn Flutter, Google’s UI toolkit for building beautiful, cross-platform apps. By creating a simple task manager, you’ll gain hands-on experience with Flutter’s core concepts: widgets, state management, navigation, and data persistence. Let’s break down how to build your own to-do app in Flutter.
Setting up the Project
Start by creating a new Flutter project using the command line:
flutter create todo_app
cd todo_app
This creates the boilerplate for your Flutter app, with main.dart as the entry point. Replace the default code with a MaterialApp widget that uses a HomePage as the main screen.
Designing the UI
Your to-do app’s main screen should display:
A list of tasks (using ListView.builder).
A floating action button (FAB) to add new tasks.
Each task can be shown in a ListTile with a checkbox to mark completion. The basic structure might look like this:
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
List<String> tasks = [];
void _addTask(String task) {
setState(() {
tasks.add(task);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('My To-Do List')),
body: ListView.builder(
itemCount: tasks.length,
itemBuilder: (context, index) => ListTile(
title: Text(tasks[index]),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => _showAddTaskDialog(),
child: Icon(Icons.add),
),
);
}
void _showAddTaskDialog() {
String newTask = '';
showDialog(
context: context,
builder: (_) => AlertDialog(
title: Text('Add Task'),
content: TextField(
autofocus: true,
onChanged: (value) => newTask = value,
),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: Text('Cancel'),
),
TextButton(
onPressed: () {
if (newTask.isNotEmpty) _addTask(newTask);
Navigator.pop(context);
},
child: Text('Add'),
),
],
),
);
}
}
This code adds a new task via a dialog and updates the task list dynamically using setState.
Managing State
For a small app, setState is sufficient, but if you plan to add more features, consider using providers like Provider or Riverpod for scalable state management.
Persisting Data
To make tasks persist between app restarts, use packages like shared_preferences for simple local storage or sqflite for a more robust local database. For example, save tasks as a JSON-encoded string in shared_preferences and reload them during initState.
Adding Features
Once the basic app works, expand it by adding:
✅ Due dates for tasks
✅ Priority levels
✅ Swipe to delete
✅ Filtering completed and pending tasks
✅ Dark mode support
Conclusion
Building a to-do app in Flutter is a practical way to learn building responsive UIs, managing app state, handling user input, and storing data locally. It’s a perfect stepping stone to larger, more complex projects and will strengthen your confidence in Flutter development.
Learn Flutter Training Course
Read More:
Creating Beautiful UI with Flutter
Handling User Input in Flutter
Flutter Layouts: Row, Column, Stack
Integrating REST APIs in Flutter
Visit Quality Thought Training Institute
Comments
Post a Comment