task_progress_indicator 0.0.3
task_progress_indicator: ^0.0.3 copied to clipboard
A customizable Flutter widget that visually tracks and displays the progress of task completion, updating dynamically as tasks are accomplished.
Task Progress Indicator #
A Flutter package that provides a customizable progress indicator for tracking task completion, with built-in platform-specific persistence.
Features #
- π¨ Customizable progress bar widget
- π± Platform-specific persistence
- π― Simple and intuitive API
- π¨ Material Design support
- π Progress state management
- πΎ Automatic data persistence
Screenshot #

Installation #
Add the package to your pubspec.yaml:
dependencies:
task_progress_indicator: ^0.0.1
Then run:
flutter pub get
Usage #
Basic Progress Bar #
import 'package:task_progress_indicator/task_progress_indicator.dart';
// Create a progress indicator
final progress = TaskProgressIndicator(
completed: 3,
total: 5,
color: Colors.blue,
backgroundColor: Colors.grey[200]!,
);
// Use it in your widget
TaskProgressBar(
progress: progress,
height: 8.0,
showText: true,
textStyle: TextStyle(fontSize: 14),
borderRadius: 4.0,
)
Managing Progress #
import 'package:task_progress_indicator/task_progress.dart';
// Create a progress manager
final taskProgress = TaskProgress();
// Update progress
await taskProgress.updateProgress(
completed: 3,
total: 5,
);
// Get current progress
final current = taskProgress.currentProgress;
print(current.percentage); // 0.6
print(current.text); // "3/5"
// Load saved progress
final saved = await taskProgress.loadProgress();
// Clear progress
await taskProgress.clearProgress();
Complete Example #
import 'package:flutter/material.dart';
import 'package:task_progress_indicator/task_progress_indicator.dart';
import 'package:task_progress_indicator/task_progress.dart';
class TaskProgressExample extends StatefulWidget {
const TaskProgressExample({super.key});
@override
State<TaskProgressExample> createState() => _TaskProgressExampleState();
}
class _TaskProgressExampleState extends State<TaskProgressExample> {
final TaskProgress _taskProgress = TaskProgress();
late TaskProgressIndicator _progress;
@override
void initState() {
super.initState();
_loadProgress();
}
Future<void> _loadProgress() async {
final saved = await _taskProgress.loadProgress();
setState(() {
_progress = saved ?? TaskProgressIndicator(completed: 0, total: 5);
});
}
Future<void> _updateProgress(int completed) async {
await _taskProgress.updateProgress(
completed: completed,
total: 5,
);
setState(() {
_progress = TaskProgressIndicator(
completed: completed,
total: 5,
);
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
TaskProgressBar(
progress: _progress,
height: 8.0,
showText: true,
),
const SizedBox(height: 16),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
for (int i = 0; i <= 5; i++)
ElevatedButton(
onPressed: () => _updateProgress(i),
child: Text('$i/5'),
),
],
),
],
);
}
}
Configuration #
TaskProgressIndicator #
| Parameter | Type | Default | Description |
|---|---|---|---|
| completed | int | required | Number of completed tasks |
| total | int | required | Total number of tasks |
| color | Color | Colors.blue | Progress bar color |
| backgroundColor | Color | Colors.grey[200] | Background color |
TaskProgressBar #
| Parameter | Type | Default | Description |
|---|---|---|---|
| progress | TaskProgressIndicator | required | Progress data |
| height | double | 4.0 | Height of the progress bar |
| showText | bool | true | Whether to show progress text |
| textStyle | TextStyle? | null | Custom text style |
| borderRadius | double? | null | Border radius of the progress bar |
Platform Support #
The package provides platform-specific persistence through the TaskProgress class:
- Android: Uses SharedPreferences
- iOS: Uses NSUserDefaults
- Web: Uses localStorage
- Other platforms: Uses a memory-based fallback
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request.
License #
This project is licensed under the MIT License - see the LICENSE file for details.