import 'dart:io'; import 'package:flutter/foundation.dart'; /// 画像一覧の取得・キャッシュ・削除操作を管理する. class GalleryProvider extends ChangeNotifier { static const _basePath = '/storage/emulated/0/Pictures/MiniTIAS'; List _images = []; bool _isLoading = false; List get images => _images; bool get isLoading => _isLoading; /// Pictures/MiniTIAS/ 内の PNG ファイルを取得し,新しい順に並べる. Future loadImages() async { _isLoading = true; notifyListeners(); try { final directory = Directory(_basePath); if (!await directory.exists()) { _images = []; } else { final files = await directory .list() .where( (entity) => entity is File && entity.path.toLowerCase().endsWith('.png'), ) .cast() .toList(); // 更新日時の新しい順にソート files.sort((a, b) { final aStat = a.statSync(); final bStat = b.statSync(); return bStat.modified.compareTo(aStat.modified); }); _images = files; } } catch (e) { debugPrint('画像一覧の取得に失敗: $e'); _images = []; } _isLoading = false; notifyListeners(); } /// 指定したファイルを削除し,一覧から除去する. Future deleteImage(File file) async { try { if (await file.exists()) { await file.delete(); } // 削除成功後にのみ一覧から除去 if (!await file.exists()) { _images.remove(file); notifyListeners(); return true; } return false; } catch (e) { debugPrint('画像の削除に失敗: $e'); return false; } } }