feat: 글래스모피즘 디자인 시스템 및 색상 가이드 전면 적용
- @doc/color.md 가이드라인에 따른 색상 시스템 전면 개편 - 딥 블루(#2563EB), 스카이 블루(#60A5FA) 메인 컬러로 변경 - 모든 화면과 위젯에 글래스모피즘 효과 일관성 있게 적용 - darkNavy, navyGray 등 새로운 텍스트 색상 체계 도입 - 공통 스낵바 및 다이얼로그 컴포넌트 추가 - Claude AI 프로젝트 컨텍스트 파일(CLAUDE.md) 추가 영향받은 컴포넌트: - 10개 스크린 (main, settings, detail, splash 등) - 30개 이상 위젯 (buttons, cards, forms 등) - 테마 시스템 (AppColors, AppTheme) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import '../providers/subscription_provider.dart';
|
||||
import '../providers/category_provider.dart';
|
||||
import '../services/sms_service.dart';
|
||||
import '../services/subscription_url_matcher.dart';
|
||||
import '../widgets/common/snackbar/app_snackbar.dart';
|
||||
|
||||
/// AddSubscriptionScreen의 비즈니스 로직을 관리하는 Controller
|
||||
class AddSubscriptionController {
|
||||
@@ -232,21 +233,9 @@ class AddSubscriptionController {
|
||||
final granted = await SMSService.requestSMSPermission();
|
||||
if (!granted) {
|
||||
if (context.mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: const Row(
|
||||
children: [
|
||||
Icon(Icons.error_outline, color: Colors.white),
|
||||
SizedBox(width: 12),
|
||||
Expanded(child: Text('SMS 권한이 필요합니다.')),
|
||||
],
|
||||
),
|
||||
behavior: SnackBarBehavior.floating,
|
||||
backgroundColor: Colors.red,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
),
|
||||
),
|
||||
AppSnackBar.showError(
|
||||
context: context,
|
||||
message: 'SMS 권한이 필요합니다.',
|
||||
);
|
||||
}
|
||||
return;
|
||||
@@ -256,21 +245,9 @@ class AddSubscriptionController {
|
||||
final subscriptions = await SMSService.scanSubscriptions();
|
||||
if (subscriptions.isEmpty) {
|
||||
if (context.mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: const Row(
|
||||
children: [
|
||||
Icon(Icons.info_outline, color: Colors.white),
|
||||
SizedBox(width: 12),
|
||||
Expanded(child: Text('구독 관련 SMS를 찾을 수 없습니다.')),
|
||||
],
|
||||
),
|
||||
behavior: SnackBarBehavior.floating,
|
||||
backgroundColor: Colors.orange,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
),
|
||||
),
|
||||
AppSnackBar.showWarning(
|
||||
context: context,
|
||||
message: '구독 관련 SMS를 찾을 수 없습니다.',
|
||||
);
|
||||
}
|
||||
return;
|
||||
@@ -331,21 +308,9 @@ class AddSubscriptionController {
|
||||
});
|
||||
} catch (e) {
|
||||
if (context.mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Row(
|
||||
children: [
|
||||
const Icon(Icons.error_outline, color: Colors.white),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Text('SMS 스캔 중 오류 발생: $e')),
|
||||
],
|
||||
),
|
||||
behavior: SnackBarBehavior.floating,
|
||||
backgroundColor: Colors.red,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
),
|
||||
),
|
||||
AppSnackBar.showError(
|
||||
context: context,
|
||||
message: 'SMS 스캔 중 오류 발생: $e',
|
||||
);
|
||||
}
|
||||
} finally {
|
||||
@@ -399,11 +364,9 @@ class AddSubscriptionController {
|
||||
});
|
||||
|
||||
if (context.mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text('저장 중 오류가 발생했습니다: $e'),
|
||||
backgroundColor: Colors.red,
|
||||
),
|
||||
AppSnackBar.showError(
|
||||
context: context,
|
||||
message: '저장 중 오류가 발생했습니다: $e',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user