Merge branch 'main' into feature/input-date
This commit is contained in:
commit
93beabe884
@ -1,3 +1,4 @@
|
|||||||
|
import 'package:covas_mobile/classes/alert.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:flutter_dotenv/flutter_dotenv.dart'; // Import dotenv
|
import 'package:flutter_dotenv/flutter_dotenv.dart'; // Import dotenv
|
||||||
@ -51,46 +52,63 @@ class _MyHomePageState extends State<ListItemMenu> {
|
|||||||
// Fetching events from API
|
// Fetching events from API
|
||||||
static Future<List<Events>> getPosts() async {
|
static Future<List<Events>> getPosts() async {
|
||||||
PermissionStatus status = await Permission.location.status;
|
PermissionStatus status = await Permission.location.status;
|
||||||
|
final List<Events> body = [];
|
||||||
var url = Uri.parse("${globals.api}/events");
|
var url = Uri.parse("${globals.api}/events");
|
||||||
if (status.isGranted) {
|
if (status.isGranted) {
|
||||||
print("Location permission granted");
|
print("Location permission granted");
|
||||||
|
|
||||||
// Get the current position with high accuracy
|
// Get the current position with high accuracy
|
||||||
LocationSettings locationSettings = LocationSettings(
|
|
||||||
accuracy: LocationAccuracy.high,
|
|
||||||
distanceFilter:
|
|
||||||
10, // Optional: Minimum distance (in meters) to trigger location update
|
|
||||||
);
|
|
||||||
|
|
||||||
Position position = await Geolocator.getCurrentPosition(
|
const LocationSettings locationSettings = LocationSettings(
|
||||||
locationSettings: locationSettings,
|
accuracy: LocationAccuracy.medium,
|
||||||
|
timeLimit: Duration(seconds: 5),
|
||||||
);
|
);
|
||||||
// Calculate the boundaries
|
Position? position;
|
||||||
double radiusInKm = 50;
|
try {
|
||||||
double latDistance = radiusInKm / 111.0;
|
position = await Geolocator.getCurrentPosition(
|
||||||
double lonDistance =
|
locationSettings: locationSettings);
|
||||||
radiusInKm / (111.0 * cos(position.latitude * pi / 180));
|
} on LocationServiceDisabledException {
|
||||||
|
// Handle location services disabled
|
||||||
|
print('Location services are disabled.');
|
||||||
|
position = await Geolocator.getLastKnownPosition();
|
||||||
|
if (position == null) {
|
||||||
|
print('No last known position available.');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// Handle other errors
|
||||||
|
print('Failed to get location: $e');
|
||||||
|
position = await Geolocator.getLastKnownPosition();
|
||||||
|
if (position == null) {
|
||||||
|
print('No last known position available.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (position != null) {
|
||||||
|
// Calculate the boundaries
|
||||||
|
double radiusInKm = 50;
|
||||||
|
double latDistance = radiusInKm / 111.0;
|
||||||
|
double lonDistance =
|
||||||
|
radiusInKm / (111.0 * cos(position.latitude * pi / 180));
|
||||||
|
|
||||||
double minLat = position.latitude - latDistance;
|
double minLat = position.latitude - latDistance;
|
||||||
double maxLat = position.latitude + latDistance;
|
double maxLat = position.latitude + latDistance;
|
||||||
double minLon = position.longitude - lonDistance;
|
double minLon = position.longitude - lonDistance;
|
||||||
double maxLon = position.longitude + lonDistance;
|
double maxLon = position.longitude + lonDistance;
|
||||||
DateTime currentDatetime = DateTime.now();
|
DateTime currentDatetime = DateTime.now();
|
||||||
url = Uri.parse("${globals.api}/events/search"
|
url = Uri.parse("${globals.api}/events/search"
|
||||||
"?min_lat=$minLat&max_lat=$maxLat"
|
"?min_lat=$minLat&max_lat=$maxLat"
|
||||||
"&min_lon=$minLon&max_lon=$maxLon¤t_datetime=${currentDatetime.toString()}");
|
"&min_lon=$minLon&max_lon=$maxLon¤t_datetime=${currentDatetime.toString()}");
|
||||||
}
|
}
|
||||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||||
var accessToken = prefs.getString("access_token") ?? "";
|
var accessToken = prefs.getString("access_token") ?? "";
|
||||||
final List<Events> body = [];
|
|
||||||
if (accessToken.isNotEmpty) {
|
if (accessToken.isNotEmpty) {
|
||||||
final response = await http.get(url, headers: {
|
final response = await http.get(url, headers: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
HttpHeaders.cookieHeader: "access_token=${accessToken}"
|
HttpHeaders.cookieHeader: "access_token=${accessToken}"
|
||||||
});
|
});
|
||||||
final List body = json.decode(utf8.decode(response.bodyBytes));
|
final List body = json.decode(utf8.decode(response.bodyBytes));
|
||||||
return body.map((e) => Events.fromJson(e)).toList();
|
return body.map((e) => Events.fromJson(e)).toList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return body;
|
return body;
|
||||||
}
|
}
|
||||||
|
@ -141,19 +141,33 @@ class _MapboxPagesState extends State<MapboxPages> with ShowErrorDialog {
|
|||||||
"Location permissions are permanently denied. Enable them in settings.");
|
"Location permissions are permanently denied. Enable them in settings.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LocationSettings locationSettings = LocationSettings(
|
const LocationSettings locationSettings = LocationSettings(
|
||||||
accuracy: LocationAccuracy.high,
|
accuracy: LocationAccuracy.medium, timeLimit: Duration(seconds: 5));
|
||||||
distanceFilter:
|
Position? position;
|
||||||
10, // Optional: Minimum distance (in meters) to trigger location update
|
try {
|
||||||
);
|
position = await Geolocator.getCurrentPosition(
|
||||||
|
locationSettings: locationSettings);
|
||||||
Position position = await Geolocator.getCurrentPosition(
|
} on LocationServiceDisabledException {
|
||||||
locationSettings: locationSettings,
|
// Handle location services disabled
|
||||||
);
|
print('Location services are disabled.');
|
||||||
setState(() {
|
position = await Geolocator.getLastKnownPosition();
|
||||||
userPosition = LatLng(position.latitude, position.longitude);
|
if (position == null) {
|
||||||
isUserPositionInitialized = true;
|
print('No last known position available.');
|
||||||
});
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// Handle other errors
|
||||||
|
print('Failed to get location: $e');
|
||||||
|
position = await Geolocator.getLastKnownPosition();
|
||||||
|
if (position == null) {
|
||||||
|
print('No last known position available.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (position != null) {
|
||||||
|
setState(() {
|
||||||
|
userPosition = LatLng(position!.latitude, position!.longitude);
|
||||||
|
isUserPositionInitialized = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
_initToken();
|
_initToken();
|
||||||
_getEventInfo();
|
_getEventInfo();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user