feat: initial commit - Habo habit tracking app
- Complete MVP with Repository Pattern, SQLite storage - Provider + ChangeNotifier state management - Navigation 2.0 with deep link support - Habit CRUD with twoDayRule, notifications, categories - Backup/Restore via JSON - Statistics with streak tracking - Material You theme support - Biometric lock support - Desktop widget support - 27 languages i18n structure - Comprehensive test suite (87/89 passing)
This commit is contained in:
53
lib/habits/habit.dart
Normal file
53
lib/habits/habit.dart
Normal file
@@ -0,0 +1,53 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:habo/model/habit_data.dart';
|
||||
import 'package:habo/model/category.dart';
|
||||
|
||||
/// Habit is a StatefulWidget wrapper around HabitData.
|
||||
/// It manages the UI state for a single habit card.
|
||||
class Habit extends StatefulWidget {
|
||||
final HabitData habitData;
|
||||
|
||||
Habit({
|
||||
super.key,
|
||||
required this.habitData,
|
||||
});
|
||||
|
||||
set setId(int id) {
|
||||
habitData.id = id;
|
||||
}
|
||||
|
||||
factory Habit.fromJson(Map<String, dynamic> json) {
|
||||
return Habit(
|
||||
habitData: HabitData.fromJson(json),
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final data = habitData.toJson();
|
||||
data['categories'] = habitData.categories.map((c) => c.toJson()).toList();
|
||||
return data;
|
||||
}
|
||||
|
||||
@override
|
||||
State<Habit> createState() => _HabitState();
|
||||
}
|
||||
|
||||
class _HabitState extends State<Habit> {
|
||||
DateTime? _selectedDate;
|
||||
bool _isExpanded = false;
|
||||
|
||||
DateTime get selectedDate => _selectedDate ?? DateTime.now();
|
||||
set selectedDate(DateTime date) {
|
||||
_selectedDate = date;
|
||||
}
|
||||
|
||||
bool get isExpanded => _isExpanded;
|
||||
set isExpanded(bool value) {
|
||||
_isExpanded = value;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user