geo-smart-app/lib/bloc/position/position_bloc.dart

44 lines
1.2 KiB
Dart
Raw Normal View History

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
}
}