import 'dart:async'; import 'dart:ffi'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:geolocator/geolocator.dart'; import 'package:hackathonapp/app/data/models/library_model.dart'; import '../../data/repositories/library_repository.dart'; class MapsController extends GetxController { //Gelen veriyi almak LibraryRepository get libraryRepository => Get.find(); var listOfLibraries = <LibraryModel>[].obs; var max_index = 0.obs; //Hangisinin en boş olduğunu gösterecek int i = 0; var kGooglePlexMarker = Marker(markerId: MarkerId("kGooglePlexMarker")).obs; var kGooglePlexMarker1 = Marker(markerId: MarkerId("kGooglePlexMarker1")).obs; var kGooglePlexMarker2 = Marker(markerId: MarkerId("kGooglePlexMarker2")).obs; var kGooglePlexMarker3 = Marker(markerId: MarkerId("kGooglePlexMarker2")).obs; //Kullanıcı Future<void> getLib() async { listOfLibraries.value = await libraryRepository.getLocations(); listOfLibraries.forEach((element) { print(element.capacity); }); var firstLong = double.parse(listOfLibraries.value[0].long.toString()); var firstLat = double.parse(listOfLibraries.value[0].lat.toString()); var secondlong = double.parse(listOfLibraries.value[1].long.toString()); var secondlat = double.parse(listOfLibraries.value[1].lat.toString()); var thirdlong = double.parse(listOfLibraries.value[2].long.toString()); var thirdlat = double.parse(listOfLibraries.value[2].lat.toString()); kGooglePlexMarker.value = Marker( markerId: MarkerId("kGooglePlexMarker"), // ignore: prefer_const_constructors infoWindow: InfoWindow(title: ""), icon: BitmapDescriptor.defaultMarker, position: LatLng(firstLat, firstLong)); kGooglePlexMarker1.value = Marker( markerId: MarkerId("kGooglePlexMarker1"), icon: BitmapDescriptor.defaultMarker, position: LatLng(secondlat, secondlong)); kGooglePlexMarker2.value = Marker( markerId: MarkerId("kGooglePlexMarker2"), icon: BitmapDescriptor.defaultMarker, position: LatLng(thirdlat, thirdlong)); kGooglePlexMarker3.value = Marker( markerId: MarkerId("kGooglePlexMarker3"), icon: BitmapDescriptor.defaultMarker, position: LatLng(41047194, 29.061684)); CameraPosition firstLocation = CameraPosition( bearing: 10.0, target: LatLng(firstLat, firstLong), zoom: 10, ); final GoogleMapController controller = await mapController.value.future; await controller .animateCamera(CameraUpdate.newCameraPosition(firstLocation)); } Future<void> setLib() async { //ilk değeri gönderiyor await libraryRepository.changeLibraryStatus(listOfLibraries.value.first); // //listOfLibraries.value.first.bla bla bla } //TODO: Implement MapsController. var mapController = Completer().obs; var flag = true.obs; // ignore: prefer_const_constructors /*var kGooglePlexMarker = Marker( markerId: MarkerId("_kGooglePlexMarker"), // ignore: prefer_const_constructors infoWindow: InfoWindow(title: ""), icon: BitmapDescriptor.defaultMarker, position: LatLng()); var kGooglePlexMarker2 = const Marker( markerId: MarkerId("_kGooglePlexMarker"), // ignore: prefer_const_constructors infoWindow: InfoWindow(title: ""), icon: BitmapDescriptor.defaultMarker, position: LatLng(35.42796133580664, -122.085749655962)); var kGooglePlexMarker3 = const Marker( markerId: MarkerId("_kGooglePlexMarker"), // ignore: prefer_const_constructors infoWindow: InfoWindow(title: ""), icon: BitmapDescriptor.defaultMarker, position: LatLng(37.42796133580664, -122.085749655962));*/ final CameraPosition kGooglePlex = const CameraPosition( target: LatLng(37.42796133580664, -122.085749655962), zoom: 14.4746, ); Future<void> goToTheLake() async { /*TODO: parametre geldi*/ CameraPosition kLake = const CameraPosition( bearing: 192.8334901395799, target: LatLng(37.43296265331129, -122.08832357078792), tilt: 59.440717697143555, zoom: 19.151926040649414); final GoogleMapController controller = await mapController.value.future; controller.animateCamera(CameraUpdate.newCameraPosition(kLake)); } //Kullanıcının lokasyonunu alma /*Future<Position> _determintePosition() async { bool serviceEnabled; LocationPermission permission; serviceEnabled = await Geolocator.isLocationServiceEnabled(); if (!serviceEnabled) { return Future.error('Location services are disabled.'); } }*/ @override void onInit() async { super.onInit(); await getLib(); } @override void onReady() { super.onReady(); } @override void onClose() { super.onClose(); } LibraryModel getirEnMusait() { var konum0 = double.parse(listOfLibraries.value[0].capacity!); var konum1 = double.parse(listOfLibraries.value[1].capacity!); var konum2 = double.parse(listOfLibraries.value[2].capacity!); if (konum0 > konum1 && konum2 > konum1) { return listOfLibraries.value[1]; } else if (konum0 > konum2 && konum1 > konum2) { return listOfLibraries.value[2]; } else if (konum1 > konum0 && konum2 > konum0) { return listOfLibraries.value[0]; } return LibraryModel(); } Color renkgetir(int index) { if (double.parse(listOfLibraries.value[index].capacity!) < 30.0) { return Colors.greenAccent; } else if (double.parse(listOfLibraries.value[index].capacity!) > 30.0 && double.parse(listOfLibraries.value[index].capacity!) < 60.0) { return Colors.yellowAccent; } else { return Colors.redAccent; } } void pop_up() { if (flag.value == false) { flag.value = true; } else { flag.value = false; } } }