diff --git a/lib/controllers/sms_scan_controller.dart b/lib/controllers/sms_scan_controller.dart index 7fb8587..caf059f 100644 --- a/lib/controllers/sms_scan_controller.dart +++ b/lib/controllers/sms_scan_controller.dart @@ -17,15 +17,13 @@ import '../providers/category_provider.dart'; import '../providers/payment_card_provider.dart'; import '../l10n/app_localizations.dart'; import '../utils/logger.dart'; +import '../widgets/common/snackbar/app_snackbar.dart'; class SmsScanController extends ChangeNotifier { // 상태 관리 bool _isLoading = false; bool get isLoading => _isLoading; - String? _errorMessage; - String? get errorMessage => _errorMessage; - List _scannedSubscriptions = []; List get scannedSubscriptions => _scannedSubscriptions; PaymentCardSuggestion? _currentSuggestion; @@ -109,7 +107,6 @@ class SmsScanController extends ChangeNotifier { Future scanSms(BuildContext context) async { _isLoading = true; - _errorMessage = null; _scannedSubscriptions = []; _currentIndex = 0; notifyListeners(); @@ -137,9 +134,12 @@ class SmsScanController extends ChangeNotifier { final req = await permission.Permission.sms.request(); if (!ctx.mounted) return; if (!req.isGranted) { - // 거부됨: 안내 후 종료 + // 거부됨: 토스트 표시 후 종료 if (!ctx.mounted) return; - _errorMessage = AppLocalizations.of(ctx).smsPermissionRequired; + AppSnackBar.showError( + context: ctx, + message: AppLocalizations.of(ctx).smsPermissionRequired, + ); _isLoading = false; notifyListeners(); return; @@ -162,7 +162,10 @@ class SmsScanController extends ChangeNotifier { if (scanResults.isEmpty) { Log.i('스캔된 구독이 없음'); - _errorMessage = AppLocalizations.of(context).subscriptionNotFound; + AppSnackBar.showError( + context: context, + message: AppLocalizations.of(context).subscriptionNotFound, + ); _isLoading = false; notifyListeners(); return; @@ -184,7 +187,10 @@ class SmsScanController extends ChangeNotifier { if (repeatSubscriptions.isEmpty) { Log.i('반복 결제된 구독이 없음'); - _errorMessage = AppLocalizations.of(context).repeatSubscriptionNotFound; + AppSnackBar.showError( + context: context, + message: AppLocalizations.of(context).repeatSubscriptionNotFound, + ); _isLoading = false; notifyListeners(); return; @@ -223,8 +229,10 @@ class SmsScanController extends ChangeNotifier { } catch (e) { Log.e('SMS 스캔 중 오류 발생', e); if (context.mounted) { - _errorMessage = - AppLocalizations.of(context).smsScanErrorWithMessage(e.toString()); + AppSnackBar.showError( + context: context, + message: AppLocalizations.of(context).smsScanErrorWithMessage(e.toString()), + ); _isLoading = false; notifyListeners(); } @@ -343,7 +351,6 @@ class SmsScanController extends ChangeNotifier { void resetState() { _scannedSubscriptions = []; _currentIndex = 0; - _errorMessage = null; _selectedPaymentCardId = null; _currentSuggestion = null; _shouldSuggestCardCreation = false; diff --git a/lib/screens/sms_scan_screen.dart b/lib/screens/sms_scan_screen.dart index c05b70d..5f61aba 100644 --- a/lib/screens/sms_scan_screen.dart +++ b/lib/screens/sms_scan_screen.dart @@ -58,7 +58,6 @@ class _SmsScanScreenState extends State { if (_controller.scannedSubscriptions.isEmpty) { return ScanInitialWidget( onScanPressed: () => _controller.startScan(context), - errorMessage: _controller.errorMessage, ); } @@ -77,7 +76,6 @@ class _SmsScanScreenState extends State { }); return ScanInitialWidget( onScanPressed: () => _controller.startScan(context), - errorMessage: _controller.errorMessage, ); } diff --git a/lib/widgets/sms_scan/scan_initial_widget.dart b/lib/widgets/sms_scan/scan_initial_widget.dart index 221903a..37c301b 100644 --- a/lib/widgets/sms_scan/scan_initial_widget.dart +++ b/lib/widgets/sms_scan/scan_initial_widget.dart @@ -7,12 +7,10 @@ import '../../l10n/app_localizations.dart'; class ScanInitialWidget extends StatelessWidget { final VoidCallback onScanPressed; - final String? errorMessage; const ScanInitialWidget({ super.key, required this.onScanPressed, - this.errorMessage, }); @override @@ -24,15 +22,6 @@ class ScanInitialWidget extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - if (errorMessage != null) - Padding( - padding: const EdgeInsets.only(bottom: 24.0), - child: ThemedText( - errorMessage!, - color: Theme.of(context).colorScheme.error, - textAlign: TextAlign.center, - ), - ), ThemedText( AppLocalizations.of(context).findRepeatSubscriptions, fontSize: 20,