From a977178f65811feea572c374b0005aadf10be7b5 Mon Sep 17 00:00:00 2001 From: sunwook <117016927+nuk0325@users.noreply.github.com> Date: Tue, 19 May 2026 22:18:41 +0900 Subject: [PATCH 1/3] =?UTF-8?q?refactor:=20=EC=95=8C=EB=A6=BC=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B2=BD=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widgets/notification_settings_dialog.dart} | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) rename lib/features/challenge/{widgets/NotificationSettingsDialog.dart => detail/widgets/notification_settings_dialog.dart} (98%) diff --git a/lib/features/challenge/widgets/NotificationSettingsDialog.dart b/lib/features/challenge/detail/widgets/notification_settings_dialog.dart similarity index 98% rename from lib/features/challenge/widgets/NotificationSettingsDialog.dart rename to lib/features/challenge/detail/widgets/notification_settings_dialog.dart index 868c624..eb45b65 100644 --- a/lib/features/challenge/widgets/NotificationSettingsDialog.dart +++ b/lib/features/challenge/detail/widgets/notification_settings_dialog.dart @@ -77,7 +77,12 @@ class _NotificationSettingsDialogState "전체 알림", "모든 알림 받기", allNotifications, - (val) => setState(() => allNotifications = val), + (val) => setState(() { + allNotifications = val; + dailyReminder = val; + mateReaction = val; + mateVerification = val; + }), ), _buildDailyReminderSection(), _buildSwitchRow( From a57945877b049e4766ff6cf9f9cfd6aa1caf507f Mon Sep 17 00:00:00 2001 From: sunwook <117016927+nuk0325@users.noreply.github.com> Date: Tue, 19 May 2026 22:19:03 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EC=A0=84=EC=B2=B4=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20=ED=86=A0=EA=B8=80=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/features/challenge/detail/widgets/challenge_popup_menu.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/features/challenge/detail/widgets/challenge_popup_menu.dart b/lib/features/challenge/detail/widgets/challenge_popup_menu.dart index 6c20b88..10ece9b 100644 --- a/lib/features/challenge/detail/widgets/challenge_popup_menu.dart +++ b/lib/features/challenge/detail/widgets/challenge_popup_menu.dart @@ -6,7 +6,7 @@ import 'package:haenaem/core/theme/app_colors.dart'; import 'package:haenaem/core/theme/app_typography.dart'; import 'package:haenaem/features/challenge/invite/screens/challenge_invite_screen.dart'; import 'package:haenaem/features/challenge/detail/widgets/exit_confirm_dialog.dart'; -import 'package:haenaem/features/challenge/widgets/NotificationSettingsDialog.dart'; +import 'package:haenaem/features/challenge/detail/widgets/notification_settings_dialog.dart'; import 'package:haenaem/features/challenge/settings/screens/challenge_settings_screen.dart'; // import 'package:haenaem/features/challenge/provider/challenge_provider.dart'; // 추가 import '../provider/challenge_leave_provider.dart'; From 7c18e872f5c63926dfb72ae34eafa8d4c02f32bf Mon Sep 17 00:00:00 2001 From: sunwook <117016927+nuk0325@users.noreply.github.com> Date: Tue, 19 May 2026 22:35:10 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=EC=A0=84=EC=B2=B4=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20=ED=86=A0=EA=B8=80=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widgets/notification_settings_dialog.dart | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/features/challenge/detail/widgets/notification_settings_dialog.dart b/lib/features/challenge/detail/widgets/notification_settings_dialog.dart index eb45b65..9aee8a0 100644 --- a/lib/features/challenge/detail/widgets/notification_settings_dialog.dart +++ b/lib/features/challenge/detail/widgets/notification_settings_dialog.dart @@ -89,13 +89,27 @@ class _NotificationSettingsDialogState "메이트 반응 소식", "다른 참여자들이 내 인증글에 반응 시 알림", mateReaction, - (val) => setState(() => mateReaction = val), + (val) => setState(() { + mateReaction = val; + if (!val) { + allNotifications = false; + } else if (dailyReminder && mateVerification) { + allNotifications = true; + } + }), ), _buildSwitchRow( "메이트 인증 소식", "다른 참여자들이 인증 완료 시 알림", mateVerification, - (val) => setState(() => mateVerification = val), + (val) => setState(() { + mateVerification = val; + if (!val) { + allNotifications = false; + } else if (dailyReminder && mateReaction) { + allNotifications = true; + } + }), ), const SizedBox(height: 24), @@ -134,7 +148,7 @@ class _NotificationSettingsDialogState String title, String subtitle, bool value, - ValueChanged onChanged, + ValueChanged? onChanged, ) { return Padding( padding: const EdgeInsets.symmetric(vertical: 10), @@ -197,11 +211,18 @@ class _NotificationSettingsDialogState "일일 리마인더", "매일 $selectedTime 알림", dailyReminder, - (val) => setState(() => dailyReminder = val), + (val) => setState(() { + dailyReminder = val; + if (!val) { + allNotifications = false; + } else if (mateReaction && mateVerification) { + allNotifications = true; + } + }), ), // 2. 리마인더가 활성화되었을 때만 드롭다운 표시 - if (dailyReminder) + if (dailyReminder && allNotifications) Padding( padding: const EdgeInsets.only(bottom: 20), child: GestureDetector(