implemented RMV public transit module including trip search, station departures, and nearby stop lookup, added "Marianum Connect" API integration with bearer token authentication and auto-refresh logic, integrated geolocator for location-based station search, added persistent storage for favorite stations and recent trip queries, and implemented comprehensive UI for journey details, trip results, and disruption alerts
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import '../../../../../api/connect/rmv/rmv_models.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../repository/rmv_repository.dart';
|
||||
import 'rmv_event.dart';
|
||||
import 'rmv_state.dart';
|
||||
|
||||
class RmvBloc
|
||||
extends LoadableHydratedBloc<RmvEvent, RmvState, RmvRepository> {
|
||||
List<HimMessage> getDisruptions() => innerState?.disruptions ?? const [];
|
||||
|
||||
@override
|
||||
RmvState fromNothing() => const RmvState();
|
||||
|
||||
@override
|
||||
RmvState fromStorage(Map<String, dynamic> json) => RmvState.fromJson(json);
|
||||
|
||||
@override
|
||||
Map<String, dynamic>? toStorage(RmvState state) => state.toJson();
|
||||
|
||||
@override
|
||||
Future<void> gatherData() async {
|
||||
final disruptions = await repo.disruptions();
|
||||
add(DataGathered((state) => state.copyWith(disruptions: disruptions)));
|
||||
}
|
||||
|
||||
@override
|
||||
RmvRepository repository() => RmvRepository();
|
||||
}
|
||||
Reference in New Issue
Block a user