feat: SMS 스캔 화면 리팩토링 및 MVC 패턴 적용

- SMS 스캔 화면을 컨트롤러/서비스/위젯으로 분리
- 코드 가독성 및 유지보수성 향상
- 새로운 다국어 지원 키 추가
- Git 커밋 가이드라인 문서화
This commit is contained in:
JiWoong Sul
2025-07-17 16:59:19 +09:00
parent 91bc91383b
commit 186d1bbf66
20 changed files with 1794 additions and 1408 deletions

View File

@@ -0,0 +1,70 @@
import 'package:flutter/material.dart';
import '../../theme/app_colors.dart';
import '../../widgets/themed_text.dart';
import '../../widgets/common/buttons/primary_button.dart';
import '../../widgets/native_ad_widget.dart';
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
Widget build(BuildContext context) {
return Column(
children: [
// 광고 위젯 추가
const NativeAdWidget(key: ValueKey('sms_scan_start_ad')),
const SizedBox(height: 48),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (errorMessage != null)
Padding(
padding: const EdgeInsets.only(bottom: 24.0),
child: ThemedText(
errorMessage!,
color: Colors.red,
textAlign: TextAlign.center,
),
),
ThemedText(
AppLocalizations.of(context).findRepeatSubscriptions,
fontSize: 20,
fontWeight: FontWeight.bold,
forceDark: true,
),
const SizedBox(height: 16),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: ThemedText(
AppLocalizations.of(context).scanTextMessages,
textAlign: TextAlign.center,
opacity: 0.7,
forceDark: true,
),
),
const SizedBox(height: 32),
PrimaryButton(
text: AppLocalizations.of(context).startScanning,
icon: Icons.search_rounded,
onPressed: onScanPressed,
width: 200,
height: 56,
backgroundColor: AppColors.primaryColor,
),
],
),
),
],
);
}
}