2020-07-28 18:11:47 +00:00
|
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
|
|
import 'package:geosmart/bloc/authentication/authentication.dart';
|
|
|
|
import 'package:geosmart/bloc/position/position_event.dart';
|
|
|
|
import 'package:geosmart/bloc/position/position_state.dart';
|
|
|
|
import 'package:geosmart/service/position_service.dart';
|
|
|
|
|
|
|
|
class PositionBloc extends Bloc<PositionEvent, PositionState> {
|
|
|
|
final AuthenticationBloc authenticationBloc;
|
|
|
|
|
2024-12-25 05:37:16 +00:00
|
|
|
PositionBloc({required this.authenticationBloc})
|
|
|
|
: super(PositionTrackingIdle()) {
|
|
|
|
on<PositionStartTracking>((event, emit) async {
|
|
|
|
emit(PositionTrackingStarted());
|
|
|
|
});
|
2020-07-28 18:11:47 +00:00
|
|
|
|
2024-12-25 05:37:16 +00:00
|
|
|
on<PositionStopTracking>((event, emit) async {
|
2020-07-28 18:11:47 +00:00
|
|
|
try {
|
|
|
|
await PositionService(
|
|
|
|
dio: authenticationBloc.dio,
|
|
|
|
).stopTracking();
|
2024-12-25 05:37:16 +00:00
|
|
|
emit(PositionTrackingIdle());
|
2020-07-28 18:11:47 +00:00
|
|
|
} catch (e) {
|
2024-12-25 05:37:16 +00:00
|
|
|
emit(PositionTrackingFailed());
|
2020-07-28 18:11:47 +00:00
|
|
|
}
|
2024-12-25 05:37:16 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
on<PositionSend>((event, emit) async {
|
2020-07-28 18:11:47 +00:00
|
|
|
try {
|
|
|
|
PositionService(
|
|
|
|
dio: authenticationBloc.dio,
|
|
|
|
).sendPosition(
|
|
|
|
event.lat,
|
|
|
|
event.lng,
|
|
|
|
);
|
|
|
|
} catch (_) {
|
|
|
|
await PositionService(
|
|
|
|
dio: authenticationBloc.dio,
|
|
|
|
).stopTracking();
|
2024-12-25 05:37:16 +00:00
|
|
|
emit(PositionTrackingFailed());
|
2020-07-28 18:11:47 +00:00
|
|
|
}
|
2024-12-25 05:37:16 +00:00
|
|
|
});
|
2020-07-28 18:11:47 +00:00
|
|
|
}
|
|
|
|
}
|