Files
habo/lib/habits/habit.dart
dazhuang aa69f2a91e 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)
2026-04-13 15:02:30 +00:00

54 lines
1.2 KiB
Dart

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();
}
}