This commit is contained in:
Hamza-Ayed
2023-08-15 14:12:20 +03:00
parent 84ab0e86dd
commit 65ade9c874
19 changed files with 619 additions and 166 deletions

View File

@@ -51,18 +51,22 @@ class LoginController extends GetxController {
// print(jsonDecoeded);
if (jsonDecoeded.isNotEmpty) {
if (jsonDecoeded['status'] == 'success') {
box.write(BoxName.pasengerID, jsonDecoeded['data'][0]['id']);
box.write(BoxName.email, jsonDecoeded['data'][0]['email']);
box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']);
Get.offAll(() => MapPage());
isloading = false;
update();
print(box.read(BoxName.pasengerID).toString());
await CRUD().post(link: AppLink.addTokens, payload: {
'token': box.read(BoxName.tokenFCM.toString()),
'passengerID': box.read(BoxName.pasengerID).toString()
}).then((value) => print('cccc'));
if (jsonDecoeded['data'][0]['verified'] == '1') {
box.write(BoxName.pasengerID, jsonDecoeded['data'][0]['id']);
box.write(BoxName.email, jsonDecoeded['data'][0]['email']);
box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']);
Get.offAll(() => MapPage());
isloading = false;
update();
print(box.read(BoxName.pasengerID).toString());
await CRUD().post(link: AppLink.addTokens, payload: {
'token': box.read(BoxName.tokenFCM.toString()),
'passengerID': box.read(BoxName.pasengerID).toString()
}).then((value) => print('cccc'));
} else {
Get.snackbar('You must Verify email !.'.tr, '',
backgroundColor: Colors.yellow[300]);
}
} else if (jsonDecoeded['status'] == 'Failure') {
Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'],
backgroundColor: Colors.redAccent);

View File

@@ -21,14 +21,14 @@ class CRUD {
'Basic ${base64Encode(utf8.encode(AppCredintials.basicAuthCredentials))}',
},
);
// print("--------------" + response.body.toString());
// print("--------------" + response.request.toString());
if (response.statusCode == 200) {
var jsonData = jsonDecode(response.body);
if (jsonData['status'] == 'success') {
print(jsonData['data']);
print(jsonData);
return response.body;
}
return response.body;
return jsonData['status'];
}
}

View File

@@ -1,5 +1,5 @@
import 'dart:convert';
import 'dart:math' show sqrt, pi, cos, sin;
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
@@ -10,6 +10,8 @@ import 'package:ride/constant/links.dart';
import 'package:ride/controller/functions/crud.dart';
import 'package:ride/views/home/map_widget.dart/buttom_sheet_map_show.dart';
import '../../models/model/locations.dart';
class MapController extends GetxController {
bool isloading = true;
TextEditingController placeController = TextEditingController();
@@ -35,6 +37,9 @@ class MapController extends GetxController {
bool isPickerShown = false;
bool isButtomSheetShown = false;
double heightButtomSheetShown = 240;
late final LatLng southwest;
late final LatLng northeast;
List<CarLocationModel> carLocations = <CarLocationModel>[];
void changeButtomSheetShown() {
isButtomSheetShown = !isButtomSheetShown;
@@ -169,10 +174,22 @@ class MapController extends GetxController {
}
Future getCarsLocationByPassenger() async {
LatLngBounds bounds =
calculateBounds(mylocation.latitude, mylocation.longitude, 10);
print(
'Southwest: ${bounds.southwest.latitude}, ${bounds.southwest.longitude}');
print(
'Northeast: ${bounds.northeast.latitude}, ${bounds.northeast.longitude}');
var res =
await CRUD().get(link: AppLink.getCarsLocationByPassenger, payload: {});
await CRUD().get(link: AppLink.getCarsLocationByPassenger, payload: {
'southwestLat': southwest.latitude.toString(),
'southwestLon': southwest.longitude.toString(),
'northeastLat': northeast.latitude.toString(),
'northeastLon': northeast.longitude.toString(),
});
var data = jsonDecode(res);
print(data);
// print(data);
for (var i = 0; i < data.length; i++) {
carsLocationByPassenger.add(LatLng(
double.parse(data['message'][i]['latitude']),
@@ -182,6 +199,23 @@ class MapController extends GetxController {
update();
}
LatLngBounds calculateBounds(
double centerLat, double centerLng, double radius) {
double radius = 2000; // 10 km in meters
southwest = LatLng(
centerLat - (radius / 111000),
centerLng - (radius / (111000 * cos(centerLat))),
);
northeast = LatLng(
centerLat + (radius / 111000),
centerLng + (radius / (111000 * cos(centerLat))),
);
return LatLngBounds(southwest: southwest, northeast: northeast);
}
GoogleMapController? mapController;
void onMapCreated(GoogleMapController controller) {
mapController = controller;
@@ -395,7 +429,7 @@ class MapController extends GetxController {
void onInit() async {
// getPolyLine();
// getMap();
getLocation();
await getLocation();
await getCarsLocationByPassenger();
addCustomPicker();
addCustomCarIcon();

View File

@@ -0,0 +1,93 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ride/constant/box_name.dart';
import 'package:ride/constant/links.dart';
import 'package:ride/controller/functions/crud.dart';
import 'package:ride/main.dart';
import '../../views/widgets/elevated_btn.dart';
class ProfileController extends GetxController {
bool isloading = false;
Map prfoileData = {};
TextEditingController txtController = TextEditingController();
List genders = ['Male', 'Female', 'Non-binary'];
String gender = '';
void setGender(String value) {
gender = value;
}
String? selectedDegree;
void setDegree(String? degree) {
selectedDegree = degree;
update();
}
updateColumn(Map<String, dynamic> payload) async {
isloading = true;
update();
await CRUD().post(link: AppLink.updateprofile, payload: payload);
await getProfile();
isloading = false;
update();
}
updatField(String columnName) async {
Get.defaultDialog(
title: '${'Update'.tr} $columnName',
content: Column(
children: [
SizedBox(
width: Get.width * .7,
child: TextField(
controller: txtController,
decoration: const InputDecoration(
border: OutlineInputBorder(), hintText: 'type here'),
),
),
MyElevatedButton(
title: 'Update'.tr,
onPressed: () {
updateColumn({
'id': prfoileData['id'].toString(),
columnName: txtController.text,
});
Get.back();
txtController.clear();
},
)
],
),
);
}
getProfile() async {
isloading = true;
update();
var res = await CRUD().get(link: AppLink.getprofile, payload: {
'id': box.read(BoxName.pasengerID).toString(),
});
if (res.toString() == 'failure') {
Get.snackbar('failure', 'message');
isloading = false;
update();
} else {
var jsonDecoded = jsonDecode(res);
prfoileData = jsonDecoded['data'];
isloading = false;
update();
}
}
@override
void onInit() {
getProfile();
super.onInit();
}
}