2026-04-11 15:09:09 +00:00
|
|
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
|
|
import '../services/gemini_service.dart';
|
|
|
|
|
|
|
|
|
|
|
|
/// GeminiService のシングルトンプロバイダー
|
|
|
|
|
|
///
|
2026-04-11 15:24:57 +00:00
|
|
|
|
/// アプリ全体で同一インスタンスを共有し、依存関係の注入を明示化する。
|
|
|
|
|
|
/// レート制限の状態(_lastApiCallTime)は GeminiService の static フィールドの
|
|
|
|
|
|
/// ため、Provider を経由しなくても共有される。しかし Provider を通じて注入する
|
|
|
|
|
|
/// ことで「誰が GeminiService を使うか」を追跡可能にし、将来の static 除去時に
|
|
|
|
|
|
/// 安全にリファクタリングできる設計を維持する。
|
2026-04-11 15:09:09 +00:00
|
|
|
|
///
|
|
|
|
|
|
/// 使用例:
|
|
|
|
|
|
/// ```dart
|
|
|
|
|
|
/// final geminiService = ref.read(geminiServiceProvider);
|
|
|
|
|
|
/// final result = await geminiService.analyzeSakeLabel(paths);
|
|
|
|
|
|
/// ```
|
|
|
|
|
|
final geminiServiceProvider = Provider<GeminiService>((ref) {
|
|
|
|
|
|
return GeminiService();
|
|
|
|
|
|
});
|