some fix
# Conflicts: # lib/presentation/navigation/app_router.dart # pubspec.yaml
This commit is contained in:
@@ -1,27 +1,78 @@
|
||||
import 'package:be_happy/domain/entities/scooter.dart';
|
||||
import 'package:be_happy/domain/usecase/get_scooter_by_title_usecase.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
import '../event/scooter_code_event.dart';
|
||||
import '../state/scooter_code_state.dart';
|
||||
|
||||
class ScooterCodeBloc extends Bloc<ScooterCodeEvent, ScooterCodeState> {
|
||||
final GetScooterByTitleUsecase getScooterByTitleUsecase;
|
||||
|
||||
ScooterCodeBloc({required this.getScooterByTitleUsecase}) : super(const ScooterCodeInitial()) {
|
||||
on<ScooterCodeChanged>((event, emit) {
|
||||
emit(ScooterCodeInitial(code: event.code));
|
||||
});
|
||||
|
||||
on<ScooterCodeSubmitted>((event, emit) async {
|
||||
emit(ScooterCodeLoading(code: event.code));
|
||||
|
||||
final result = await getScooterByTitleUsecase(event.code);
|
||||
|
||||
/*result.fold(
|
||||
(error) => emit(ScooterCodeFailure(error.message ?? "Ошибка", code: event.code)),
|
||||
(scooter) => emit(ScooterCodeSuccess(scooter, code: event.code)),
|
||||
);*/
|
||||
});
|
||||
}
|
||||
}
|
||||
import 'package:be_happy/domain/entities/scooter.dart';
|
||||
import 'package:be_happy/domain/usecase/get_scooter_by_title_usecase.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:geolocator/geolocator.dart';
|
||||
import 'package:yandex_mapkit/yandex_mapkit.dart';
|
||||
|
||||
import '../../core/result.dart';
|
||||
import '../../domain/usecase/get_address_by_point_usecase.dart';
|
||||
import '../../domain/usecase/get_pedestrian_routes_usecase.dart';
|
||||
import '../event/scooter_code_event.dart';
|
||||
import '../state/scooter_code_state.dart';
|
||||
|
||||
class ScooterCodeBloc extends Bloc<ScooterCodeEvent, ScooterCodeState> {
|
||||
final GetScooterByTitleUsecase getScooterByTitleUsecase;
|
||||
final GetAddressByPointUsecase getAddressUsecase;
|
||||
final GetPedestrianRoutesUsecase getPedestrianRoutesUsecase;
|
||||
|
||||
ScooterCodeBloc({
|
||||
required this.getScooterByTitleUsecase,
|
||||
required this.getAddressUsecase,
|
||||
required this.getPedestrianRoutesUsecase,
|
||||
}) : super(const ScooterCodeInitial()) {
|
||||
on<ScooterCodeChanged>((event, emit) {
|
||||
emit(ScooterCodeInitial(code: event.code));
|
||||
});
|
||||
|
||||
on<ScooterCodeSubmitted>((event, emit) async {
|
||||
emit(ScooterCodeLoading(code: event.code));
|
||||
|
||||
final result = await getScooterByTitleUsecase(event.code);
|
||||
|
||||
switch (result) {
|
||||
case Success(:final data):
|
||||
if (data != null) {
|
||||
final String currentAddress = await getAddressUsecase(
|
||||
data.longitude,
|
||||
data.latitude,
|
||||
);
|
||||
|
||||
final position = await Geolocator.getCurrentPosition(
|
||||
desiredAccuracy: LocationAccuracy.high,
|
||||
);
|
||||
|
||||
final routes = await getPedestrianRoutesUsecase(
|
||||
Point(latitude: position.latitude, longitude: position.longitude),
|
||||
Point(latitude: data.longitude, longitude: data.latitude),
|
||||
);
|
||||
|
||||
final distance =
|
||||
routes?.firstOrNull?.metadata.weight.walkingDistance.value;
|
||||
print("Distance is: $distance");
|
||||
final time = routes?.firstOrNull?.metadata.weight.time.value;
|
||||
|
||||
data.distance = distance;
|
||||
data.timeToTravel = time;
|
||||
|
||||
emit(
|
||||
ScooterCodeSuccess(
|
||||
data,
|
||||
code: event.code,
|
||||
address: currentAddress,
|
||||
distance: distance ?? 0.0,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
emit(ScooterCodeFailure("Самокат не найден", code: event.code));
|
||||
}
|
||||
case Failure(:final failure):
|
||||
emit(
|
||||
ScooterCodeFailure(
|
||||
failure.message ?? "Неизвестная ошибка",
|
||||
code: event.code,
|
||||
),
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user