chore: remove development phase markers and dead commented code
- Remove Phase X / Phase D labels from inline comments and imports - Remove debugPrint calls from CustomPainter.paint() (called every frame) - Remove commented-out locale entries (fr, de) from main.dart and language_selector - Remove version header comments (v1.5 etc.) not needed in source No logic changes. flutter analyze: No issues found.
This commit is contained in:
parent
da05455e7c
commit
9f63578ca7
|
|
@ -21,17 +21,11 @@ const bool isProVersion = bool.fromEnvironment('IS_PRO_VERSION', defaultValue: f
|
||||||
void main() async {
|
void main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
||||||
// 🔍 DEBUG: Check IS_PRO_VERSION flag
|
|
||||||
debugPrint('🔍 IS_PRO_VERSION = $isProVersion');
|
|
||||||
|
|
||||||
// Initialize Hive
|
|
||||||
await Hive.initFlutter();
|
await Hive.initFlutter();
|
||||||
|
|
||||||
// Register Adapters
|
|
||||||
Hive.registerAdapter(SakeItemAdapter());
|
Hive.registerAdapter(SakeItemAdapter());
|
||||||
Hive.registerAdapter(UserProfileAdapter());
|
Hive.registerAdapter(UserProfileAdapter());
|
||||||
Hive.registerAdapter(MenuSettingsAdapter());
|
Hive.registerAdapter(MenuSettingsAdapter());
|
||||||
// Phase 0 New Adapters
|
|
||||||
Hive.registerAdapter(DisplayDataAdapter());
|
Hive.registerAdapter(DisplayDataAdapter());
|
||||||
Hive.registerAdapter(HiddenSpecsAdapter());
|
Hive.registerAdapter(HiddenSpecsAdapter());
|
||||||
Hive.registerAdapter(UserDataAdapter());
|
Hive.registerAdapter(UserDataAdapter());
|
||||||
|
|
@ -95,11 +89,8 @@ class MyApp extends ConsumerWidget {
|
||||||
GlobalCupertinoLocalizations.delegate,
|
GlobalCupertinoLocalizations.delegate,
|
||||||
],
|
],
|
||||||
supportedLocales: const [
|
supportedLocales: const [
|
||||||
Locale('ja'), // 日本語
|
Locale('ja'),
|
||||||
Locale('en'), // English
|
Locale('en'),
|
||||||
// Phase 2: フランス語・ドイツ語を追加予定
|
|
||||||
// Locale('fr'), // Français
|
|
||||||
// Locale('de'), // Deutsch
|
|
||||||
],
|
],
|
||||||
|
|
||||||
navigatorObservers: [routeObserver],
|
navigatorObservers: [routeObserver],
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:hive_flutter/hive_flutter.dart';
|
import 'package:hive_flutter/hive_flutter.dart';
|
||||||
import '../models/sake_item.dart'; // SakeItem exports ItemType
|
import '../models/sake_item.dart'; // SakeItem exports ItemType
|
||||||
import 'filter_providers.dart';
|
import 'filter_providers.dart';
|
||||||
import 'theme_provider.dart'; // Phase D6: For isBusinessMode
|
import 'theme_provider.dart';
|
||||||
|
|
||||||
// 1. Raw List Stream
|
// 1. Raw List Stream
|
||||||
final rawSakeListItemsProvider = StreamProvider<List<SakeItem>>((ref) {
|
final rawSakeListItemsProvider = StreamProvider<List<SakeItem>>((ref) {
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@ import 'package:uuid/uuid.dart';
|
||||||
import 'package:gal/gal.dart';
|
import 'package:gal/gal.dart';
|
||||||
|
|
||||||
import '../services/gemini_service.dart';
|
import '../services/gemini_service.dart';
|
||||||
import '../services/image_compression_service.dart'; // Phase 4 Added
|
import '../services/image_compression_service.dart';
|
||||||
import '../services/gamification_service.dart'; // Badge check
|
import '../services/gamification_service.dart'; // Badge check
|
||||||
import '../services/network_service.dart'; // Phase 1: Offline check
|
import '../services/network_service.dart';
|
||||||
import '../services/draft_service.dart'; // Phase 1: Draft save
|
import '../services/draft_service.dart';
|
||||||
import '../widgets/analyzing_dialog.dart';
|
import '../widgets/analyzing_dialog.dart';
|
||||||
import '../models/sake_item.dart';
|
import '../models/sake_item.dart';
|
||||||
import '../theme/app_colors.dart';
|
import '../theme/app_colors.dart';
|
||||||
|
|
@ -42,13 +42,11 @@ class _CameraScreenState extends ConsumerState<CameraScreen> with SingleTickerPr
|
||||||
bool _isTakingPicture = false;
|
bool _isTakingPicture = false;
|
||||||
DateTime? _quotaLockoutTime;
|
DateTime? _quotaLockoutTime;
|
||||||
|
|
||||||
// Phase 3-B: Focus & Zoom
|
|
||||||
double _minZoom = 1.0;
|
double _minZoom = 1.0;
|
||||||
double _maxZoom = 1.0;
|
double _maxZoom = 1.0;
|
||||||
double _currentZoom = 1.0;
|
double _currentZoom = 1.0;
|
||||||
double _baseScale = 1.0; // For pinch reference
|
double _baseScale = 1.0;
|
||||||
|
|
||||||
// Phase 3-B2: Exposure
|
|
||||||
double _minExposure = 0.0;
|
double _minExposure = 0.0;
|
||||||
double _maxExposure = 0.0;
|
double _maxExposure = 0.0;
|
||||||
double _currentExposureOffset = 0.0;
|
double _currentExposureOffset = 0.0;
|
||||||
|
|
@ -77,14 +75,10 @@ class _CameraScreenState extends ConsumerState<CameraScreen> with SingleTickerPr
|
||||||
|
|
||||||
_initializeControllerFuture = _controller!.initialize().then((_) async {
|
_initializeControllerFuture = _controller!.initialize().then((_) async {
|
||||||
if (!mounted) return;
|
if (!mounted) return;
|
||||||
// [Phase 3-B] Get Zoom Range
|
_minZoom = await _controller!.getMinZoomLevel();
|
||||||
_minZoom = await _controller!.getMinZoomLevel();
|
|
||||||
_maxZoom = await _controller!.getMaxZoomLevel();
|
_maxZoom = await _controller!.getMaxZoomLevel();
|
||||||
// [Phase 3-B2] Get Exposure Range
|
|
||||||
_minExposure = await _controller!.getMinExposureOffset();
|
_minExposure = await _controller!.getMinExposureOffset();
|
||||||
_maxExposure = await _controller!.getMaxExposureOffset();
|
_maxExposure = await _controller!.getMaxExposureOffset();
|
||||||
|
|
||||||
// [Phase 3-B] Set Auto Focus Mode
|
|
||||||
await _controller!.setFocusMode(FocusMode.auto);
|
await _controller!.setFocusMode(FocusMode.auto);
|
||||||
setState(() {});
|
setState(() {});
|
||||||
});
|
});
|
||||||
|
|
@ -205,9 +199,7 @@ class _CameraScreenState extends ConsumerState<CameraScreen> with SingleTickerPr
|
||||||
await _initializeControllerFuture;
|
await _initializeControllerFuture;
|
||||||
final image = await _controller!.takePicture();
|
final image = await _controller!.takePicture();
|
||||||
|
|
||||||
// Save image locally (App Sandbox)
|
|
||||||
final directory = await getApplicationDocumentsDirectory();
|
final directory = await getApplicationDocumentsDirectory();
|
||||||
// Phase 4 Improvement: Apply Compression (Target Max 1MB)
|
|
||||||
// 1. Save temp raw file
|
// 1. Save temp raw file
|
||||||
final tempPath = join(directory.path, '${const Uuid().v4()}_temp.jpg');
|
final tempPath = join(directory.path, '${const Uuid().v4()}_temp.jpg');
|
||||||
await image.saveTo(tempPath);
|
await image.saveTo(tempPath);
|
||||||
|
|
@ -270,8 +262,7 @@ class _CameraScreenState extends ConsumerState<CameraScreen> with SingleTickerPr
|
||||||
if (images.isNotEmpty && mounted) {
|
if (images.isNotEmpty && mounted) {
|
||||||
// IF RETURN PATH Mode (Only supports one)
|
// IF RETURN PATH Mode (Only supports one)
|
||||||
if (widget.mode == CameraMode.returnPath) {
|
if (widget.mode == CameraMode.returnPath) {
|
||||||
// Phase D3: Compress and persist gallery image
|
final directory = await getApplicationDocumentsDirectory();
|
||||||
final directory = await getApplicationDocumentsDirectory();
|
|
||||||
final finalPath = join(directory.path, '${const Uuid().v4()}.jpg');
|
final finalPath = join(directory.path, '${const Uuid().v4()}.jpg');
|
||||||
final compressedPath = await ImageCompressionService.compressForGemini(
|
final compressedPath = await ImageCompressionService.compressForGemini(
|
||||||
images.first.path,
|
images.first.path,
|
||||||
|
|
@ -283,7 +274,6 @@ class _CameraScreenState extends ConsumerState<CameraScreen> with SingleTickerPr
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Phase D3: Compress and persist all gallery images to Documents directory
|
|
||||||
final directory = await getApplicationDocumentsDirectory();
|
final directory = await getApplicationDocumentsDirectory();
|
||||||
|
|
||||||
for (var img in images) {
|
for (var img in images) {
|
||||||
|
|
@ -381,7 +371,6 @@ class _CameraScreenState extends ConsumerState<CameraScreen> with SingleTickerPr
|
||||||
Future<void> _analyzeImages() async {
|
Future<void> _analyzeImages() async {
|
||||||
if (_capturedImages.isEmpty) return;
|
if (_capturedImages.isEmpty) return;
|
||||||
|
|
||||||
// Phase 1: オフライン検知 - Draft保存処理
|
|
||||||
final isOnline = await NetworkService.isOnline();
|
final isOnline = await NetworkService.isOnline();
|
||||||
if (!isOnline) {
|
if (!isOnline) {
|
||||||
// オフライン時: Draft として保存
|
// オフライン時: Draft として保存
|
||||||
|
|
@ -950,9 +939,10 @@ class _ExposureSliderPainter extends CustomPainter {
|
||||||
// minValue (e.g., -4.0) -> 0.0 (bottom)
|
// minValue (e.g., -4.0) -> 0.0 (bottom)
|
||||||
// 0.0 (center) -> 0.5 (middle)
|
// 0.0 (center) -> 0.5 (middle)
|
||||||
// maxValue (e.g., +4.0) -> 1.0 (top)
|
// maxValue (e.g., +4.0) -> 1.0 (top)
|
||||||
final normalized = (currentValue - minValue) / range; // Debug
|
final normalized = (currentValue - minValue) / range;
|
||||||
debugPrint('CustomPainter: value=$currentValue, min=$minValue, max=$maxValue, range=$range, normalized=${normalized.toStringAsFixed(3)}'); // Map to Y coordinate: 0.0 (normalized) -> bottom, 1.0 (normalized) -> top
|
// Map to Y coordinate: 0.0 (normalized) -> bottom, 1.0 (normalized) -> top
|
||||||
final knobY = (size.height - 20) * (1.0 - normalized) + 10; debugPrint(' -> knobY=${knobY.toStringAsFixed(1)} (height=${size.height})'); // Draw knob shadow
|
final knobY = (size.height - 20) * (1.0 - normalized) + 10;
|
||||||
|
// Draw knob shadow
|
||||||
canvas.drawCircle(Offset(trackX, knobY), 7, knobShadowPaint);
|
canvas.drawCircle(Offset(trackX, knobY), 7, knobShadowPaint);
|
||||||
// Draw knob
|
// Draw knob
|
||||||
canvas.drawCircle(Offset(trackX, knobY), 6, knobPaint);
|
canvas.drawCircle(Offset(trackX, knobY), 6, knobPaint);
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import '../../widgets/map/prefecture_tile_map.dart';
|
||||||
import '../../theme/app_colors.dart';
|
import '../../theme/app_colors.dart';
|
||||||
import '../../models/maps/japan_map_data.dart';
|
import '../../models/maps/japan_map_data.dart';
|
||||||
import '../../providers/ui_experiment_provider.dart';
|
import '../../providers/ui_experiment_provider.dart';
|
||||||
import '../../models/schema/item_type.dart'; // Phase D4: For ItemType.sake filtering
|
import '../../models/schema/item_type.dart';
|
||||||
import '../../widgets/common/error_retry_widget.dart';
|
import '../../widgets/common/error_retry_widget.dart';
|
||||||
|
|
||||||
class BreweryMapScreen extends ConsumerStatefulWidget {
|
class BreweryMapScreen extends ConsumerStatefulWidget {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import 'package:share_plus/share_plus.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import '../../providers/sake_list_provider.dart';
|
import '../../providers/sake_list_provider.dart';
|
||||||
import '../../services/shuko_diagnosis_service.dart';
|
import '../../services/shuko_diagnosis_service.dart';
|
||||||
import '../../providers/theme_provider.dart'; // v1.1 Fix
|
import '../../providers/theme_provider.dart';
|
||||||
import '../../theme/app_colors.dart';
|
import '../../theme/app_colors.dart';
|
||||||
import '../../widgets/sake_radar_chart.dart';
|
import '../../widgets/sake_radar_chart.dart';
|
||||||
import '../../widgets/contextual_help_icon.dart';
|
import '../../widgets/contextual_help_icon.dart';
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import 'menu_creation_screen.dart';
|
||||||
import '../theme/app_colors.dart';
|
import '../theme/app_colors.dart';
|
||||||
import '../providers/sake_list_provider.dart';
|
import '../providers/sake_list_provider.dart';
|
||||||
import '../providers/filter_providers.dart';
|
import '../providers/filter_providers.dart';
|
||||||
import '../providers/menu_providers.dart'; // Phase 2-1
|
import '../providers/menu_providers.dart';
|
||||||
import '../models/sake_item.dart';
|
import '../models/sake_item.dart';
|
||||||
import '../widgets/sake_search_delegate.dart';
|
import '../widgets/sake_search_delegate.dart';
|
||||||
import '../widgets/onboarding_dialog.dart';
|
import '../widgets/onboarding_dialog.dart';
|
||||||
|
|
@ -22,7 +22,7 @@ import '../providers/ui_experiment_provider.dart'; // A/B Test
|
||||||
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
|
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
|
||||||
import 'package:lucide_icons/lucide_icons.dart';
|
import 'package:lucide_icons/lucide_icons.dart';
|
||||||
import '../widgets/prefecture_filter_sheet.dart';
|
import '../widgets/prefecture_filter_sheet.dart';
|
||||||
import '../widgets/pending_analysis_banner.dart'; // Phase 1: Banner widget
|
import '../widgets/pending_analysis_banner.dart';
|
||||||
import '../widgets/common/error_retry_widget.dart';
|
import '../widgets/common/error_retry_widget.dart';
|
||||||
|
|
||||||
// CR-006: NotifierProviderでオンボーディングチェック状態を管理(グローバル変数を削除)
|
// CR-006: NotifierProviderでオンボーディングチェック状態を管理(グローバル変数を削除)
|
||||||
|
|
|
||||||
|
|
@ -130,9 +130,6 @@ class _MainScreenState extends ConsumerState<MainScreen> {
|
||||||
final isBusiness = userProfile.isBusinessMode;
|
final isBusiness = userProfile.isBusinessMode;
|
||||||
final t = Translations(userProfile.locale); // Translation helper
|
final t = Translations(userProfile.locale); // Translation helper
|
||||||
|
|
||||||
// 🔍 DEBUG: Check IS_PRO_VERSION flag
|
|
||||||
debugPrint('🔍 MainScreen: IS_PRO_VERSION = $isProVersion, isBusiness = $isBusiness');
|
|
||||||
|
|
||||||
// Define Screens for each mode
|
// Define Screens for each mode
|
||||||
// Lite版のPro限定タブは表示されないようにダミー画面を配置
|
// Lite版のPro限定タブは表示されないようにダミー画面を配置
|
||||||
// (タップ時にダイアログで対応するため、画面遷移は発生しない)
|
// (タップ時にダイアログで対応するため、画面遷移は発生しない)
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,6 @@ import '../widgets/gamification/activity_stats.dart';
|
||||||
import '../theme/app_colors.dart';
|
import '../theme/app_colors.dart';
|
||||||
import '../services/mbti_types.dart'; // Needed for type title display
|
import '../services/mbti_types.dart'; // Needed for type title display
|
||||||
|
|
||||||
// v1.5
|
|
||||||
|
|
||||||
class SoulScreen extends ConsumerStatefulWidget {
|
class SoulScreen extends ConsumerStatefulWidget {
|
||||||
const SoulScreen({super.key});
|
const SoulScreen({super.key});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:lucide_icons/lucide_icons.dart';
|
import 'package:lucide_icons/lucide_icons.dart';
|
||||||
import '../../providers/sake_list_provider.dart';
|
import '../../providers/sake_list_provider.dart';
|
||||||
import '../../models/schema/item_type.dart'; // Phase D5: For filtering set products
|
import '../../models/schema/item_type.dart';
|
||||||
|
|
||||||
|
|
||||||
class ActivityStats extends ConsumerWidget {
|
class ActivityStats extends ConsumerWidget {
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,6 @@ class LanguageSelector extends ConsumerWidget {
|
||||||
final languages = [
|
final languages = [
|
||||||
{'code': 'ja', 'name': '日本語', 'flag': '🇯🇵'},
|
{'code': 'ja', 'name': '日本語', 'flag': '🇯🇵'},
|
||||||
{'code': 'en', 'name': 'English', 'flag': '🇺🇸'},
|
{'code': 'en', 'name': 'English', 'flag': '🇺🇸'},
|
||||||
// Phase 2: フランス語・ドイツ語を追加予定
|
|
||||||
// {'code': 'fr', 'name': 'Français', 'flag': '🇫🇷'},
|
|
||||||
// {'code': 'de', 'name': 'Deutsch', 'flag': '🇩🇪'},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
showDialog(
|
showDialog(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue