회원목록

This commit is contained in:
2025-08-01 16:45:26 +09:00
parent a996def67a
commit ed8c7eacba
191 changed files with 17491 additions and 0 deletions
@@ -0,0 +1,90 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../services/subscription_notification_service.dart';
import '../services/subscription_service.dart';
/// 구독 알림 위젯
class SubscriptionAlertWidget extends StatelessWidget {
const SubscriptionAlertWidget({super.key});
@override
Widget build(BuildContext context) {
// 구독 알림 서비스 가져오기
final notificationService = Provider.of<SubscriptionNotificationService>(
context,
listen: true,
);
// 구독 서비스 가져오기
final subscriptionService = Provider.of<SubscriptionService>(
context,
listen: false,
);
// 알림 메시지 가져오기
final message = notificationService.getNotificationMessage();
// 알림이 없으면 빈 컨테이너 반환
if (message == null) {
return const SizedBox.shrink();
}
// 알림 배너 표시
return Container(
width: double.infinity,
padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0),
color: notificationService.hasExpired
? Colors.red.shade100
: Colors.orange.shade100,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Icon(
notificationService.hasExpired
? Icons.error_outline
: Icons.warning_amber_outlined,
color: notificationService.hasExpired
? Colors.red.shade700
: Colors.orange.shade700,
),
const SizedBox(width: 8),
Expanded(
child: Text(
message,
style: TextStyle(
color: notificationService.hasExpired
? Colors.red.shade700
: Colors.orange.shade700,
fontWeight: FontWeight.bold,
),
),
),
],
),
const SizedBox(height: 8),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
TextButton(
onPressed: () {
// 구독 화면으로 이동
Navigator.of(context).pushNamed('/subscription');
},
style: TextButton.styleFrom(
backgroundColor: notificationService.hasExpired
? Colors.red.shade700
: Colors.orange.shade700,
foregroundColor: Colors.white,
),
child: const Text('구독 갱신하기'),
),
],
),
],
),
);
}
}