feat: adopt material 3 theme and billing adjustments
This commit is contained in:
@@ -12,6 +12,8 @@ import 'package:intl/intl.dart';
|
||||
import '../widgets/dialogs/delete_confirmation_dialog.dart';
|
||||
import '../widgets/common/snackbar/app_snackbar.dart';
|
||||
import '../l10n/app_localizations.dart';
|
||||
import '../utils/billing_date_util.dart';
|
||||
import '../utils/business_day_util.dart';
|
||||
|
||||
/// DetailScreen의 비즈니스 로직을 관리하는 Controller
|
||||
class DetailScreenController extends ChangeNotifier {
|
||||
@@ -407,7 +409,14 @@ class DetailScreenController extends ChangeNotifier {
|
||||
subscription.monthlyCost = monthlyCost;
|
||||
subscription.websiteUrl = websiteUrl;
|
||||
subscription.billingCycle = _billingCycle;
|
||||
subscription.nextBillingDate = _nextBillingDate;
|
||||
// 선택일이 오늘(또는 과거)이면 결제 주기에 맞춰 다음 회차로 보정하여 저장
|
||||
final originalDateOnly = DateTime(
|
||||
_nextBillingDate.year, _nextBillingDate.month, _nextBillingDate.day);
|
||||
var adjustedNext =
|
||||
BillingDateUtil.ensureFutureDate(originalDateOnly, _billingCycle);
|
||||
// 주말/고정 공휴일 보정 → 다음 영업일로 이월
|
||||
adjustedNext = BusinessDayUtil.nextBusinessDay(adjustedNext);
|
||||
subscription.nextBillingDate = adjustedNext;
|
||||
subscription.categoryId = _selectedCategoryId;
|
||||
subscription.currency = _currency;
|
||||
|
||||
@@ -433,6 +442,14 @@ class DetailScreenController extends ChangeNotifier {
|
||||
'이벤트활성=${subscription.isEventActive}');
|
||||
|
||||
// 구독 업데이트
|
||||
// 자동 보정이 발생했으면 안내
|
||||
if (adjustedNext.isAfter(originalDateOnly)) {
|
||||
AppSnackBar.showInfo(
|
||||
context: context,
|
||||
message: '다음 결제 예정일로 저장됨',
|
||||
);
|
||||
}
|
||||
|
||||
await provider.updateSubscription(subscription);
|
||||
|
||||
if (context.mounted) {
|
||||
@@ -575,15 +592,5 @@ class DetailScreenController extends ChangeNotifier {
|
||||
return colors[hash % colors.length];
|
||||
}
|
||||
|
||||
/// 그라데이션 가져오기
|
||||
LinearGradient getGradient(Color baseColor) {
|
||||
return LinearGradient(
|
||||
colors: [
|
||||
baseColor,
|
||||
baseColor.withValues(alpha: 0.8),
|
||||
],
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
);
|
||||
}
|
||||
// getGradient 제거됨 (그라데이션 미사용)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user