43 lines
1.3 KiB
Dart
43 lines
1.3 KiB
Dart
import 'package:be_happy/domain/entities/subscription.dart';
|
|
|
|
import '../../domain/entities/subscription_period.dart';
|
|
|
|
abstract class SubscriptionDetailsState {}
|
|
|
|
class DetailsLoading extends SubscriptionDetailsState {}
|
|
|
|
class DetailsError extends SubscriptionDetailsState {
|
|
final String message;
|
|
DetailsError(this.message);
|
|
}
|
|
|
|
class DetailsContentState extends SubscriptionDetailsState {
|
|
final Subscription subscription;
|
|
final SubscriptionPeriod selectedPeriod;
|
|
final bool isAgreed;
|
|
final bool isAlreadyPurchased; // ✅ Куплена ли эта подписка сейчас
|
|
final bool isSuccess; // ✅ Сигнал для навигатора назад
|
|
|
|
DetailsContentState({
|
|
required this.subscription,
|
|
required this.selectedPeriod,
|
|
this.isAgreed = false,
|
|
this.isAlreadyPurchased = false,
|
|
this.isSuccess = false,
|
|
});
|
|
|
|
DetailsContentState copyWith({
|
|
SubscriptionPeriod? selectedPeriod,
|
|
bool? isAgreed,
|
|
bool? isAlreadyPurchased,
|
|
bool? isSuccess,
|
|
}) {
|
|
return DetailsContentState(
|
|
subscription: this.subscription,
|
|
selectedPeriod: selectedPeriod ?? this.selectedPeriod,
|
|
isAgreed: isAgreed ?? this.isAgreed,
|
|
isAlreadyPurchased: isAlreadyPurchased ?? this.isAlreadyPurchased,
|
|
isSuccess: isSuccess ?? this.isSuccess,
|
|
);
|
|
}
|
|
} |