feat: 알림 재예약 개선과 패키지 업그레이드
This commit is contained in:
@@ -298,7 +298,7 @@ class EventAnalysisCard extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -226,10 +226,10 @@ class MonthlyExpenseChartCard extends StatelessWidget {
|
||||
barTouchData: BarTouchData(
|
||||
enabled: true,
|
||||
touchTooltipData: BarTouchTooltipData(
|
||||
tooltipBgColor: Theme.of(context)
|
||||
tooltipBorderRadius: BorderRadius.circular(8),
|
||||
getTooltipColor: (group) => Theme.of(context)
|
||||
.colorScheme
|
||||
.inverseSurface,
|
||||
tooltipRoundedRadius: 8,
|
||||
getTooltipItem:
|
||||
(group, groupIndex, rod, rodIndex) {
|
||||
return BarTooltipItem(
|
||||
@@ -261,10 +261,10 @@ class MonthlyExpenseChartCard extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
swapAnimationDuration: ReduceMotion.isEnabled(context)
|
||||
? const Duration(milliseconds: 0)
|
||||
duration: ReduceMotion.isEnabled(context)
|
||||
? Duration.zero
|
||||
: const Duration(milliseconds: 300),
|
||||
swapAnimationCurve: Curves.easeOut,
|
||||
curve: Curves.easeOut,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -390,12 +390,10 @@ class _SubscriptionPieChartCardState extends State<SubscriptionPieChartCard> {
|
||||
},
|
||||
),
|
||||
),
|
||||
swapAnimationDuration:
|
||||
ReduceMotion.isEnabled(context)
|
||||
? const Duration(milliseconds: 0)
|
||||
: const Duration(
|
||||
milliseconds: 300),
|
||||
swapAnimationCurve: Curves.easeOut,
|
||||
duration: ReduceMotion.isEnabled(context)
|
||||
? Duration.zero
|
||||
: const Duration(milliseconds: 300),
|
||||
curve: Curves.easeOut,
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
@@ -10,10 +10,10 @@ class AnimatedWaveBackground extends StatelessWidget {
|
||||
final AnimationController pulseController;
|
||||
|
||||
const AnimatedWaveBackground({
|
||||
Key? key,
|
||||
super.key,
|
||||
required this.controller,
|
||||
required this.pulseController,
|
||||
}) : super(key: key);
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -15,14 +15,14 @@ class CategoryHeaderWidget extends StatelessWidget {
|
||||
final double totalCostCNY;
|
||||
|
||||
const CategoryHeaderWidget({
|
||||
Key? key,
|
||||
super.key,
|
||||
required this.categoryName,
|
||||
required this.subscriptionCount,
|
||||
required this.totalCostUSD,
|
||||
required this.totalCostKRW,
|
||||
required this.totalCostJPY,
|
||||
required this.totalCostCNY,
|
||||
}) : super(key: key);
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -17,12 +17,12 @@ class EmptyStateWidget extends StatelessWidget {
|
||||
final VoidCallback onAddPressed;
|
||||
|
||||
const EmptyStateWidget({
|
||||
Key? key,
|
||||
super.key,
|
||||
required this.fadeController,
|
||||
required this.rotateController,
|
||||
required this.slideController,
|
||||
required this.onAddPressed,
|
||||
}) : super(key: key);
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -18,13 +18,13 @@ class MainScreenSummaryCard extends StatelessWidget {
|
||||
final AnimationController waveController;
|
||||
final AnimationController slideController;
|
||||
const MainScreenSummaryCard({
|
||||
Key? key,
|
||||
super.key,
|
||||
required this.provider,
|
||||
required this.fadeController,
|
||||
required this.pulseController,
|
||||
required this.waveController,
|
||||
required this.slideController,
|
||||
}) : super(key: key);
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -11,8 +11,7 @@ import '../theme/ui_constants.dart';
|
||||
/// SRP에 따라 광고 전용 위젯으로 분리
|
||||
class NativeAdWidget extends StatefulWidget {
|
||||
final bool useOuterPadding; // true이면 외부에서 페이지 패딩을 제공
|
||||
const NativeAdWidget({Key? key, this.useOuterPadding = false})
|
||||
: super(key: key);
|
||||
const NativeAdWidget({super.key, this.useOuterPadding = false});
|
||||
|
||||
@override
|
||||
State<NativeAdWidget> createState() => _NativeAdWidgetState();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
// import '../../theme/app_colors.dart';
|
||||
import '../../widgets/native_ad_widget.dart';
|
||||
import '../../widgets/themed_text.dart';
|
||||
import '../../l10n/app_localizations.dart';
|
||||
|
||||
@@ -8,29 +8,33 @@ class ScanLoadingWidget extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
CircularProgressIndicator(
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
ThemedText(
|
||||
AppLocalizations.of(context).scanningMessages,
|
||||
forceDark: true,
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
ThemedText(
|
||||
AppLocalizations.of(context).findingSubscriptions,
|
||||
opacity: 0.7,
|
||||
forceDark: true,
|
||||
),
|
||||
],
|
||||
return Column(
|
||||
children: [
|
||||
const NativeAdWidget(key: ValueKey('sms_scan_loading_ad')),
|
||||
const SizedBox(height: 48),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
CircularProgressIndicator(
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
ThemedText(
|
||||
AppLocalizations.of(context).scanningMessages,
|
||||
forceDark: true,
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
ThemedText(
|
||||
AppLocalizations.of(context).findingSubscriptions,
|
||||
opacity: 0.7,
|
||||
forceDark: true,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,10 +20,10 @@ class SubscriptionListWidget extends StatelessWidget {
|
||||
final AnimationController fadeController;
|
||||
|
||||
const SubscriptionListWidget({
|
||||
Key? key,
|
||||
super.key,
|
||||
required this.categorizedSubscriptions,
|
||||
required this.fadeController,
|
||||
}) : super(key: key);
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -188,9 +188,9 @@ class MultiSliver extends StatelessWidget {
|
||||
final List<Widget> children;
|
||||
|
||||
const MultiSliver({
|
||||
Key? key,
|
||||
super.key,
|
||||
required this.children,
|
||||
}) : super(key: key);
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
Reference in New Issue
Block a user