|
|
|
@ -1,30 +1,30 @@
|
|
|
|
|
import 'dart:async';
|
|
|
|
|
|
|
|
|
|
import 'package:diplomaticquarterapp/config/config.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/model/pharmacies/Addresses.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/customer_addresses_service.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/models/rrt/service_price.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/HomeHealthCare/NewHomeHealthCare/location_page.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/theme/colors.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/app_map/google_huawei_map.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/dialogs/select_location_dialog.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:flutter_material_pickers/flutter_material_pickers.dart';
|
|
|
|
|
import 'package:geolocator/geolocator.dart';
|
|
|
|
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
|
|
|
|
import 'package:google_maps_place_picker/google_maps_place_picker.dart';
|
|
|
|
|
import 'package:permission_handler/permission_handler.dart';
|
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
|
|
|
|
|
|
|
|
|
|
import 'rrt-place-order.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/app_map/google_huawei_map.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/theme/colors.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/dialogs/select_location_dialog.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/customer_addresses_service.dart';
|
|
|
|
|
|
|
|
|
|
class RRTRequestPickupAddressPage extends StatefulWidget {
|
|
|
|
|
final ServicePrice servicePrice;
|
|
|
|
@ -48,16 +48,19 @@ class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage
|
|
|
|
|
|
|
|
|
|
LatLng currentPostion;
|
|
|
|
|
List<AddressInfo> myAddresses = [];
|
|
|
|
|
AddressInfo selectedAddress;
|
|
|
|
|
AddressInfo selectedAddress = new AddressInfo();
|
|
|
|
|
StreamController<int> addressStreamController = StreamController();
|
|
|
|
|
Stream<int> addressStream;
|
|
|
|
|
StreamController<int> addressLoadingStreamController = StreamController();
|
|
|
|
|
Stream<int> addressLoadingStream;
|
|
|
|
|
|
|
|
|
|
// AddressInfo _selectedAddress;
|
|
|
|
|
double latitude = 0;
|
|
|
|
|
double longitude = 0;
|
|
|
|
|
AppMap appMap;
|
|
|
|
|
bool showCurrentLocation = false;
|
|
|
|
|
AppSharedPreferences sharedPref = AppSharedPreferences();
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void initState() {
|
|
|
|
|
super.initState();
|
|
|
|
@ -68,7 +71,8 @@ class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage
|
|
|
|
|
_updatePosition(camera);
|
|
|
|
|
},
|
|
|
|
|
onMapCreated: () {
|
|
|
|
|
goToCurrentLocation();
|
|
|
|
|
// goToCurrentLocation();
|
|
|
|
|
_getUserLocation();
|
|
|
|
|
setState(() {});
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
@ -107,6 +111,7 @@ class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage
|
|
|
|
|
zoom: 14.4746,
|
|
|
|
|
);
|
|
|
|
|
appMap.moveTo(cameraPostion: cameraPosition);
|
|
|
|
|
selectedAddress.latLong = currentPostion.latitude.toString() + "," + currentPostion.longitude.toString();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -233,6 +238,7 @@ class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage
|
|
|
|
|
void _updatePosition(CameraPosition _position) {
|
|
|
|
|
latitude = _position.target.latitude;
|
|
|
|
|
longitude = _position.target.longitude;
|
|
|
|
|
selectedAddress.latLong = latitude.toString() + "," + longitude.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget centerTargetPoint() {
|
|
|
|
@ -250,7 +256,7 @@ class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage
|
|
|
|
|
|
|
|
|
|
Widget continueButton() {
|
|
|
|
|
return Padding(
|
|
|
|
|
padding: const EdgeInsets.all(15),
|
|
|
|
|
padding: const EdgeInsets.all(0.0),
|
|
|
|
|
child: DefaultButton(TranslationBase.of(context).continues, () {
|
|
|
|
|
Navigator.push(
|
|
|
|
|
context,
|
|
|
|
@ -304,13 +310,41 @@ class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void _getUserLocation() async {
|
|
|
|
|
if (await this.sharedPref.getDouble(USER_LAT) != null && await this.sharedPref.getDouble(USER_LONG) != null) {
|
|
|
|
|
var lat = await this.sharedPref.getDouble(USER_LAT);
|
|
|
|
|
var long = await this.sharedPref.getDouble(USER_LONG);
|
|
|
|
|
latitude = lat;
|
|
|
|
|
longitude = long;
|
|
|
|
|
currentPostion = LatLng(lat, long);
|
|
|
|
|
setMap();
|
|
|
|
|
} else {
|
|
|
|
|
if (await Permission.location.request().isGranted) {
|
|
|
|
|
var position = await GeolocatorPlatform.instance.getCurrentPosition(desiredAccuracy: LocationAccuracy.low);
|
|
|
|
|
currentPostion = LatLng(position.latitude, position.longitude);
|
|
|
|
|
latitude = position.latitude;
|
|
|
|
|
longitude = position.longitude;
|
|
|
|
|
setMap();
|
|
|
|
|
} else {
|
|
|
|
|
requestPermissions().then(
|
|
|
|
|
(value) async {
|
|
|
|
|
if (value[Permission.location].isGranted) {
|
|
|
|
|
var position = await GeolocatorPlatform.instance.getCurrentPosition(desiredAccuracy: LocationAccuracy.low);
|
|
|
|
|
currentPostion = LatLng(position.latitude, position.longitude);
|
|
|
|
|
latitude = position.latitude;
|
|
|
|
|
longitude = position.longitude;
|
|
|
|
|
setMap();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
goToCurrentLocation() async {
|
|
|
|
|
Geolocator.getCurrentPosition().then((value) {
|
|
|
|
|
selectedAddress = AddressInfo(latLong: '${value.latitude},${value.longitude}');
|
|
|
|
|
moveToLocation(LatLng(value.latitude, value.longitude));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// moveToLocation(LatLng(location.latitude, location.longitude), animate: false);
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|