41 lines
1.0 KiB
Dart
41 lines
1.0 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'attraction_details_event.dart';
|
|
import 'attraction_details_state.dart';
|
|
import '../repository/attraction_details_repository.dart';
|
|
|
|
class AttractionDetailsBloc
|
|
extends Bloc<AttractionDetailsEvent, AttractionDetailsState> {
|
|
final AttractionDetailsRepository repository;
|
|
|
|
AttractionDetailsBloc({
|
|
required this.repository,
|
|
}) : super(AttractionDetailsInitial()) {
|
|
on<FetchAttractionDetails>(_onFetchAttractionDetails);
|
|
}
|
|
|
|
Future<void> _onFetchAttractionDetails(
|
|
FetchAttractionDetails event,
|
|
Emitter<AttractionDetailsState> emit,
|
|
) async {
|
|
emit(AttractionDetailsLoading());
|
|
|
|
try {
|
|
final response = await repository.fetchAttractionDetails(
|
|
attractionId: event.attractionId,
|
|
);
|
|
|
|
emit(
|
|
AttractionDetailsLoaded(
|
|
attractionDetails: response,
|
|
),
|
|
);
|
|
} catch (e) {
|
|
emit(
|
|
AttractionDetailsError(
|
|
message: e.toString(),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
}
|