YaruKotoController)flutter_localizations)class YaruKoto {
final String id; // UUID
final String title; // プロジェクト名
final String? description; // 説明(任意)
final List<TaskItem> items; // 関連する項目
final DateTime createdAt; // 作成日時
// 進捗率を自動計算(項目の平均値)
double get progressPercentage;
String get progressLabel; // 🌱🌳 で表示
}
class TaskItem {
final String id; // UUID
final String title; // 項目名
final String? description; // 説明(任意)
final List<Task> tasks; // 関連するタスク
final DateTime createdAt; // 作成日時
// 進捗率を自動計算(配下のタスクの平均値)
double get progressPercentage;
String get progressLabel; // 🌱🌳 で表示
}
class Task {
final String id; // UUID
final String title; // タスク名
final TaskProgress progress; // 進捗状態
final DateTime createdAt; // 作成日時
}
enum TaskProgress {
notStarted(0, '未着手'),
inProgress(50, 'ちょっとやった'), // 🌱
completed(100, '完了'); // 🌳
}
flutter_localizations: 国際化対応shared_preferences: ローカルデータ保存uuid: 一意ID生成google_mobile_ads: 広告表示flutter_dotenv: 環境変数管理lib/
├── main.dart # アプリエントリーポイント
├── src/
│ ├── app.dart # アプリケーション設定
│ ├── controllers/ # 状態管理
│ │ └── yaru_koto_controller.dart
│ ├── models/ # データモデル
│ │ ├── yaru_koto.dart # プロジェクトモデル
│ │ ├── task_item.dart # 項目モデル(中間階層)
│ │ └── task.dart # タスクモデル(最小単位)
│ ├── services/ # ビジネスロジック
│ │ ├── yaru_koto_service.dart
│ │ └── admob_service.dart
│ ├── views/ # UI画面
│ │ ├── yaru_koto_list_view.dart # プロジェクト一覧
│ │ ├── yaru_koto_detail_view.dart # プロジェクト詳細(項目一覧)
│ │ ├── task_item_detail_view.dart # 項目詳細(タスク一覧)
│ │ └── dialogs/
│ └── settings/ # 設定関連
プロジェクト一覧画面
├── プロジェクト詳細画面(項目一覧)
│ ├── 項目詳細画面(タスク一覧)
│ │ ├── タスク追加ダイアログ
│ │ └── タスク編集ダイアログ
│ ├── 項目追加ダイアログ
│ └── 項目編集ダイアログ
├── プロジェクト追加ダイアログ
└── プロジェクト編集ダイアログ