feat: SMS 스캔 화면 리팩토링 및 MVC 패턴 적용
- SMS 스캔 화면을 컨트롤러/서비스/위젯으로 분리 - 코드 가독성 및 유지보수성 향상 - 새로운 다국어 지원 키 추가 - Git 커밋 가이드라인 문서화
This commit is contained in:
70
lib/widgets/sms_scan/scan_initial_widget.dart
Normal file
70
lib/widgets/sms_scan/scan_initial_widget.dart
Normal 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,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user