From 2d38e8905bb34ccfa09493cb8528d8e4cd77cd4f Mon Sep 17 00:00:00 2001 From: "Mirza.Shafique" Date: Tue, 14 Sep 2021 16:34:45 +0300 Subject: [PATCH] CMC 1.4 --- .../NewCMC/new_cmc_step_three_page.dart | 38 +++++-- .../NewCMC/new_cmc_step_tow_page.dart | 102 +++++++++++++----- 2 files changed, 100 insertions(+), 40 deletions(-) diff --git a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_three_page.dart b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_three_page.dart index 7017122d..77291083 100644 --- a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_three_page.dart +++ b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_three_page.dart @@ -7,6 +7,7 @@ import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_v import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/Dialog/confirm_dialog.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; @@ -78,6 +79,9 @@ class _NewCMCStepThreePageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + SizedBox( + height: 12, + ), Text( TranslationBase.of(context).orderSummary, style: TextStyle( @@ -120,13 +124,26 @@ class _NewCMCStepThreePageState extends State { clipBehavior: Clip.antiAlias, elevation: 0, margin: const EdgeInsets.all(0), - child: GoogleMap( - mapType: MapType.normal, - markers: markers, - initialCameraPosition: _kGooglePlex, - onMapCreated: (GoogleMapController controller) { - _controller.complete(controller); - }, + // child: GoogleMap( + // mapType: MapType.normal, + // markers: markers, + // initialCameraPosition: _kGooglePlex, + // onMapCreated: (GoogleMapController controller) { + // _controller.complete(controller); + // }, + // ), + child: Image.network("https://maps.googleapis.com/maps/api/staticmap?center=" + + widget.cmcInsertPresOrderRequestModel.latitude.toString() + + "," + + widget.cmcInsertPresOrderRequestModel.longitude.toString() + + "&zoom=16&size=600x300&maptype=roadmap&markers=color:red%7C" + + widget.cmcInsertPresOrderRequestModel.latitude.toString() + + "," + + widget.cmcInsertPresOrderRequestModel.longitude.toString() + + "&key=AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8", + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, ), ), ), @@ -184,7 +201,9 @@ class _NewCMCStepThreePageState extends State { label: TranslationBase.of(context).confirm, color: CustomColors.green, onTap: () async { + GifLoaderDialogUtils.showMyDialog(context); String requestId = await widget.model.insertPresPresOrder(order: widget.cmcInsertPresOrderRequestModel); + GifLoaderDialogUtils.hideDialog(context); if (widget.model.state != ViewState.ErrorLocal) { //show scuccess dialog showCMCConfirmDialog( @@ -195,10 +214,7 @@ class _NewCMCStepThreePageState extends State { Navigator.pop(context); }, ); - - } else { - - } + } else {} }, textColor: Theme.of(context).backgroundColor), ), diff --git a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart index 02dbc735..316a9ab9 100644 --- a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart +++ b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart @@ -18,8 +18,10 @@ 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: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 'cmc_location_page.dart'; @@ -45,38 +47,63 @@ class _NewCMCStepTowPageState extends State { bool showCurrentLocation = false; Completer _controller = Completer(); + GoogleMapController googleMapController; static CameraPosition _kGooglePlex = CameraPosition( target: LatLng(37.42796133580664, -122.085749655962), zoom: 14.4746, ); - final Set markers = new Set(); + LatLng currentPostion; - @override - void initState() { - if (widget.cmcInsertPresOrderRequestModel.latitude == null) { - setLatitudeAndLongitude(); - } else { - latitude = widget.cmcInsertPresOrderRequestModel.latitude; - longitude = widget.cmcInsertPresOrderRequestModel.longitude; + void _getUserLocation() async { + if (await Permission.contacts.request().isGranted) { + // Either the permission was already granted before or the user just granted it. + var position = await GeolocatorPlatform.instance.getCurrentPosition(desiredAccuracy: LocationAccuracy.high); + + currentPostion = LatLng(position.latitude, position.longitude); setMap(); + } else { + requestPermissions().then((value) async { + if (value[Permission.location].isGranted) { + var position = await GeolocatorPlatform.instance.getCurrentPosition(desiredAccuracy: LocationAccuracy.high); + + currentPostion = LatLng(position.latitude, position.longitude); + setMap(); + } + }); } + } + + @override + void initState() { + _getUserLocation(); super.initState(); } setMap() { - markers.clear(); - markers.add( - Marker( - markerId: MarkerId( - latitude.hashCode.toString(), + setState(() { + _kGooglePlex = CameraPosition( + target: currentPostion, + zoom: 14.4746, + ); + googleMapController.animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition( + target: currentPostion, + zoom: 20, ), - position: LatLng(latitude, longitude)), - ); - _kGooglePlex = CameraPosition( - target: LatLng(latitude, longitude), - zoom: 14.4746, - ); + ), + ); + }); + } + + Future> requestPermissions() async { + var permissionResults = [ + Permission.location, + Permission.locationAlways, + ].request(); + + return permissionResults; } setLatitudeAndLongitude({bool isSetState = false, String latLong}) async { @@ -116,7 +143,7 @@ class _NewCMCStepTowPageState extends State { children: [ if (widget.model.addressesList.isNotEmpty) Card( - margin: EdgeInsets.only(left: 12, right: 12, bottom: 12), + margin: EdgeInsets.only(left: 12, right: 12, bottom: 12, top: 12), shape: cardRadius(12), elevation: 3, child: Container( @@ -183,14 +210,27 @@ class _NewCMCStepTowPageState extends State { ), ), Expanded( - child: GoogleMap( - mapType: MapType.normal, - markers: markers, - zoomControlsEnabled: false, - initialCameraPosition: _kGooglePlex, - onMapCreated: (GoogleMapController controller) { - _controller.complete(controller); - }, + child: Stack( + alignment: Alignment.center, + children: [ + GoogleMap( + mapType: MapType.normal, + zoomControlsEnabled: false, + myLocationButtonEnabled: true, + myLocationEnabled: true, + initialCameraPosition: _kGooglePlex, + onCameraMove: ((_position) => _updatePosition(_position)), + onMapCreated: (GoogleMapController controller) { + googleMapController = controller; + _controller.complete(controller); + }, + ), + Icon( + Icons.place, + color: CustomColors.accentColor, + size: 50, + ), + ], ), ), Padding( @@ -207,7 +247,6 @@ class _NewCMCStepTowPageState extends State { navigateTo( context, NewCMCStepThreePage( - cmcInsertPresOrderRequestModel: widget.cmcInsertPresOrderRequestModel, model: widget.model, ), @@ -221,6 +260,11 @@ class _NewCMCStepTowPageState extends State { ); } + void _updatePosition(CameraPosition _position) { + latitude = _position.target.latitude; + longitude = _position.target.longitude; + } + void confirmSelectLocationDialog(List addresses) { showDialog( context: context,