i8n과 광고 수정

This commit is contained in:
JiWoong Sul
2025-12-07 21:14:54 +09:00
parent 64da0c5fd3
commit bac4acf9a3
25 changed files with 640 additions and 382 deletions

View File

@@ -6,7 +6,6 @@ import 'dart:io';
import '../services/notification_service.dart';
// import '../widgets/glassmorphism_card.dart';
// import '../theme/app_colors.dart';
import '../widgets/native_ad_widget.dart';
import '../widgets/common/snackbar/app_snackbar.dart';
import '../l10n/app_localizations.dart';
import '../providers/locale_provider.dart';
@@ -17,6 +16,7 @@ import '../theme/adaptive_theme.dart';
import '../widgets/common/layout/page_container.dart';
import '../theme/color_scheme_ext.dart';
import '../widgets/app_navigator.dart';
import '../theme/ui_constants.dart';
class SettingsScreen extends StatelessWidget {
const SettingsScreen({super.key});
@@ -86,23 +86,16 @@ class SettingsScreen extends StatelessWidget {
child: PageContainer(
padding: EdgeInsets.zero,
child: ListView(
padding: const EdgeInsets.symmetric(horizontal: 16),
padding: const EdgeInsets.fromLTRB(
16,
UIConstants.pageTopPadding,
16,
0,
),
children: [
// toolbar 높이 추가
SizedBox(
height: kToolbarHeight + MediaQuery.of(context).padding.top,
),
// 광고 위젯 추가
const NativeAdWidget(
key: ValueKey('settings_ad'),
useOuterPadding: true,
),
const SizedBox(height: 16),
// 테마 모드 설정
Card(
margin:
const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
margin: const EdgeInsets.fromLTRB(16, 0, 16, 8),
elevation: 1,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
@@ -191,7 +184,7 @@ class SettingsScreen extends StatelessWidget {
leading: Icon(Icons.color_lens,
color: cs.onSurfaceVariant),
title: Text(
'테마',
loc.theme,
style: TextStyle(color: cs.onSurface),
),
),
@@ -360,14 +353,14 @@ class SettingsScreen extends StatelessWidget {
.colorScheme
.onSurfaceVariant),
title: Text(
'정확 알람 권한(알람 및 리마인더)',
loc.exactAlarmPermission,
style: TextStyle(
color: Theme.of(context)
.colorScheme
.onSurface),
),
subtitle: Text(
'정확한 시각에 알림을 보장하려면 권한이 필요합니다.',
loc.exactAlarmPermissionDesc,
style: TextStyle(
color: Theme.of(context)
.colorScheme
@@ -385,19 +378,19 @@ class SettingsScreen extends StatelessWidget {
if (ok || recheck) {
AppSnackBar.showSuccess(
context: context,
message: '권한이 허용되었습니다.',
message: loc.permissionGranted,
);
} else {
AppSnackBar.showInfo(
context: context,
message:
'설정에서 "알람 및 리마인더"를 허용해 주세요.',
loc.allowAlarmsInSettings,
);
}
(context as Element).markNeedsBuild();
}
},
child: const Text('허용 요청'),
child: Text(loc.requestPermission),
),
);
},
@@ -747,8 +740,8 @@ class SettingsScreen extends StatelessWidget {
child: OutlinedButton.icon(
icon: const Icon(Icons
.notifications_active),
label:
const Text('테스트 알림'),
label: Text(
loc.testNotification),
onPressed: () {
NotificationService
.showTestPaymentNotification();