本ドキュメントでは,SmTIAS-Capture のアーキテクチャ(コード構成)と非機能要件を定義する.
provider パッケージを使用する| Provider | 責務 |
|---|---|
CameraProvider | カメラの初期化・プレビュー制御・撮影実行・ライフサイクル管理 |
GalleryProvider | 画像一覧の取得・キャッシュ・削除操作 |
DiagnosticsProvider | カメラ診断の実行・結果保存(インフラのみ・UI 非表示) |
lib/
├── main.dart # アプリエントリポイント,Provider 登録
├── app.dart # MaterialApp 定義,テーマ設定,180° 回転
├── providers/
│ ├── camera_provider.dart # カメラ制御の状態管理
│ ├── gallery_provider.dart # 画像一覧の状態管理
│ └── diagnostics_provider.dart # カメラ診断(インフラのみ)
├── screens/
│ ├── home_screen.dart # BottomNavigationBar による画面切替
│ ├── capture_screen.dart # 撮影画面 (S-01)
│ └── gallery_screen.dart # 一覧画面 (S-02)
├── widgets/
│ ├── camera_preview.dart # カメラプレビューウィジェット
│ ├── shutter_button.dart # シャッターボタン
│ └── image_grid.dart # サムネイルグリッド
└── services/
├── file_service.dart # ファイル保存・命名・削除
├── permission_service.dart # パーミッション管理
├── raw_capture_service.dart # ネイティブ撮影(DNG/PNG)・診断の MethodChannel
└── sound_service.dart # シャッター音・保存完了音の制御
※ 撮影・画像変換・診断の実処理は Android ネイティブ
android/.../RawCapturePlugin.kt(Camera2 / DngCreator)が担い,
raw_capture_service.dart が MethodChannel で橋渡しする。
┌─────────────────────────────────┐ │ Screens(画面) │ UI 層: ウィジェット構築のみ ├─────────────────────────────────┤ │ Widgets(部品) │ 再利用可能な UI コンポーネント ├─────────────────────────────────┤ │ Providers(状態管理) │ ビジネスロジック・状態保持 ├─────────────────────────────────┤ │ Services(サービス) │ 外部リソースとのインタフェース └─────────────────────────────────┘
context.watch / context.read で参照し,直接 Service を呼ばないflutter.minSdkVersion(android/app/build.gradle.kts が参照する Flutter 規定値)