Refactor screens to MVC architecture with modular widgets

- Extract business logic from screens into dedicated controllers
- Split large screen files into smaller, reusable widget components
- Add controllers for AddSubscriptionScreen and DetailScreen
- Create modular widgets for subscription and detail features
- Improve code organization and maintainability
- Remove duplicated code and improve reusability

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
JiWoong Sul
2025-07-11 00:21:18 +09:00
parent 4731288622
commit 83c5e3d64e
56 changed files with 9092 additions and 4579 deletions

View File

@@ -152,13 +152,6 @@ class NotificationService {
}
}
// 알림 서비스가 초기화되었는지 확인하는 메서드
static bool _isInitialized() {
// 웹 플랫폼인 경우 항상 false 반환
if (_isWeb) return false;
// 초기화 플래그 확인
return _initialized;
}
static Future<bool> requestPermission() async {
final result = await _notifications
@@ -182,7 +175,7 @@ class NotificationService {
}
try {
final androidDetails = AndroidNotificationDetails(
const androidDetails = AndroidNotificationDetails(
'subscription_channel',
'구독 알림',
channelDescription: '구독 관련 알림을 보여줍니다.',
@@ -257,7 +250,7 @@ class NotificationService {
try {
final notificationId = subscription.id.hashCode;
final androidDetails = AndroidNotificationDetails(
const androidDetails = AndroidNotificationDetails(
'subscription_channel',
'구독 알림',
channelDescription: '구독 만료 알림을 보내는 채널입니다.',
@@ -265,13 +258,13 @@ class NotificationService {
priority: Priority.high,
);
final iosDetails = DarwinNotificationDetails(
const iosDetails = DarwinNotificationDetails(
presentAlert: true,
presentBadge: true,
presentSound: true,
);
final notificationDetails = NotificationDetails(
const notificationDetails = NotificationDetails(
android: androidDetails,
iOS: iosDetails,
);