From 03bd8401b542ee8910e3da172938e591710cd38d Mon Sep 17 00:00:00 2001 From: Juan Felipe Duarte <70235683+DuarteJFelipe@users.noreply.github.com> Date: Sat, 22 Apr 2023 14:33:53 -0500 Subject: [PATCH] mapa --- android/app/src/main/AndroidManifest.xml | 5 + lib/main.dart | 6 + lib/src/components/drawer_professional.dart | 12 +- lib/src/models/event_model.dart | 16 + lib/src/screens/calendar.dart | 78 +++ lib/src/screens/register.dart | 35 +- lib/src/screens/service.dart | 530 ++++++++++++------ macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 136 +++++ pubspec.yaml | 34 +- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 12 files changed, 642 insertions(+), 216 deletions(-) create mode 100644 lib/src/models/event_model.dart create mode 100644 lib/src/screens/calendar.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 704325a..cc84a01 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,9 +1,14 @@ + + + + const ServiceScreen(), '/profesional': (context) => const ProfessionalScreen(), '/profilePro': (context) => const ProfilePro(), + '/calendar': (context) => const CalendarScreen(), }, onGenerateRoute: (settings) { throw Exception('Ruta desconocida: ${settings.name}'); diff --git a/lib/src/components/drawer_professional.dart b/lib/src/components/drawer_professional.dart index b12105f..68a8238 100644 --- a/lib/src/components/drawer_professional.dart +++ b/lib/src/components/drawer_professional.dart @@ -6,6 +6,7 @@ import 'package:flutter_rating_bar/flutter_rating_bar.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/photo_view.dart'; import 'package:prosappco/src/models/user_model.dart'; +import 'package:prosappco/src/screens/calendar.dart'; import 'package:prosappco/src/screens/profile.dart'; class DrawerProfessional extends StatefulWidget { @@ -155,7 +156,16 @@ class _DrawerProfessionalState extends State { ), ), ListTile( - onTap: () {}, + onTap: () { + Navigator.push( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return const CalendarScreen(); + }, + ), + ); + }, leading: const Icon( Icons.calendar_month, color: Colors.black, diff --git a/lib/src/models/event_model.dart b/lib/src/models/event_model.dart new file mode 100644 index 0000000..d0b0f02 --- /dev/null +++ b/lib/src/models/event_model.dart @@ -0,0 +1,16 @@ +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:prosappco/src/authentication/authentication_repository.dart'; + +final uid = AuthenticationRepository.instance.getCurrentUserUid(); + +// class EventoService { +// Future createEvent() { +// FirebaseFirestore.instance.collection('users').doc(uid).update({ +// 'ejemplo': 'ejm', +// }); + +// try {} catch (e) { +// print('Evento $e'); +// } +// } +// } diff --git a/lib/src/screens/calendar.dart b/lib/src/screens/calendar.dart new file mode 100644 index 0000000..75133dc --- /dev/null +++ b/lib/src/screens/calendar.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; +import 'package:prosappco/src/components/pop_appbar.dart'; +import 'package:table_calendar/table_calendar.dart'; + +class CalendarScreen extends StatefulWidget { + const CalendarScreen({super.key}); + + @override + State createState() => _CalendarScreenState(); +} + +class _CalendarScreenState extends State { + CalendarFormat _calendarFormat = CalendarFormat.month; + DateTime today = DateTime.now(); + + @override + void initState() { + super.initState(); + } + + void _onDaySelected(DateTime day, DateTime focusedDay) { + setState(() { + today = day; + }); + } + + void _onFormatChange(CalendarFormat format) { + setState(() { + _calendarFormat = format; + }); + } + + @override + Widget build(BuildContext context) { + // DateTime firstDay = today.subtract(Duration(days: 365)); + DateTime lastDay = today.add(const Duration(days: 365)); + + return SafeArea( + child: Scaffold( + appBar: PopAppbar( + onPressed: () { + Navigator.pop(context); + }, + label: 'Calendario', + ), + body: SingleChildScrollView( + child: Column( + children: [ + Container( + color: const Color.fromARGB(255, 224, 247, 255), + child: TableCalendar( + locale: 'es_MX', + firstDay: DateTime.utc(2010, 10, 16), + lastDay: lastDay, + focusedDay: today, + availableGestures: AvailableGestures.all, + onDaySelected: _onDaySelected, + selectedDayPredicate: (day) => isSameDay(day, today), + calendarFormat: _calendarFormat, + onFormatChanged: _onFormatChange, + availableCalendarFormats: const { + CalendarFormat.month: 'Mes', + CalendarFormat.week: 'Semana', + CalendarFormat.twoWeeks: '2 Semanas', + }, + ), + ), + ], + ), + ), + floatingActionButton: FloatingActionButton( + onPressed: () {}, + child: const Icon(Icons.add), + ), + ), + ); + } +} diff --git a/lib/src/screens/register.dart b/lib/src/screens/register.dart index a67a783..416c3da 100644 --- a/lib/src/screens/register.dart +++ b/lib/src/screens/register.dart @@ -60,7 +60,7 @@ class _RegisterScreenState extends State { child: Row( children: [ IconButton( - icon: Icon( + icon: const Icon( Icons.arrow_back, size: 30, ), @@ -68,7 +68,7 @@ class _RegisterScreenState extends State { Navigator.pop(context); }, ), - Text( + const Text( 'Registro', style: TextStyle( color: Color(0xFF262626), @@ -86,23 +86,23 @@ class _RegisterScreenState extends State { margin: const EdgeInsets.only(top: 200, left: 50, right: 50), child: Column(children: [ Padding( - padding: EdgeInsets.only(bottom: 20), + padding: const EdgeInsets.only(bottom: 20), child: ElevatedButton( onPressed: () async { await AuthenticationRepository.instance .signInWithGoogle(); }, style: ElevatedButton.styleFrom( - primary: Color(0xFF2BA4EC), + backgroundColor: const Color(0xFF2BA4EC), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(50), ), elevation: 0, - minimumSize: Size(230, 60), + minimumSize: const Size(230, 60), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, - children: [ + children: const [ Text( 'Entrar con Google ', style: TextStyle( @@ -117,9 +117,9 @@ class _RegisterScreenState extends State { )), ), Padding( - padding: EdgeInsets.symmetric(vertical: 0), + padding: const EdgeInsets.symmetric(vertical: 0), child: Row( - children: [ + children: const [ Expanded( child: Divider( color: Colors.black38, @@ -153,10 +153,10 @@ class _RegisterScreenState extends State { color: Color(0xFF65676B))), )), Padding( - padding: EdgeInsets.only(bottom: 18), + padding: const EdgeInsets.only(bottom: 18), child: TextFormField( controller: controller.email, - decoration: InputDecoration( + decoration: const InputDecoration( enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Color(0xFFECECEC)), @@ -190,22 +190,23 @@ class _RegisterScreenState extends State { controller: controller.password, obscureText: _obscureText, decoration: InputDecoration( - enabledBorder: OutlineInputBorder( + enabledBorder: const OutlineInputBorder( borderSide: BorderSide(color: Color(0xFFECECEC)), borderRadius: BorderRadius.all( Radius.circular(50), )), - focusedBorder: OutlineInputBorder( + focusedBorder: const OutlineInputBorder( borderSide: BorderSide(color: Color(0xFFECECEC)), borderRadius: BorderRadius.all( Radius.circular(50), )), hintText: 'Contraseña', - fillColor: Color.fromARGB(255, 239, 239, 239), + fillColor: + const Color.fromARGB(255, 239, 239, 239), filled: true, - prefixIcon: Icon(Icons.lock_outline), + prefixIcon: const Icon(Icons.lock_outline), suffixIcon: IconButton( icon: Icon( _obscureText @@ -242,19 +243,19 @@ class _RegisterScreenState extends State { ), RichText( text: TextSpan( - style: TextStyle( + style: const TextStyle( fontSize: 16.0, color: Color(0xFF65676B), fontFamily: 'Poppins', ), children: [ - TextSpan(text: 'Ya estas registrado? '), + const TextSpan(text: 'Ya estas registrado? '), WidgetSpan( child: GestureDetector( onTap: () { Navigator.pushReplacementNamed(context, '/login'); }, - child: Text( + child: const Text( 'Iniciar Sesión', style: TextStyle( fontSize: 16.0, diff --git a/lib/src/screens/service.dart b/lib/src/screens/service.dart index dd6579b..6ac6f85 100644 --- a/lib/src/screens/service.dart +++ b/lib/src/screens/service.dart @@ -1,10 +1,15 @@ -import 'package:firebase_auth/firebase_auth.dart'; +import 'dart:async'; import 'package:firebase_storage/firebase_storage.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:geocoding/geocoding.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/drawer_menu.dart'; -import 'package:prosappco/src/models/score_model.dart'; import 'package:prosappco/src/screens/professional.dart'; import 'package:intl/intl.dart'; @@ -16,12 +21,53 @@ class ServiceScreen extends StatefulWidget { } class _ServiceScreenState extends State { + final TextEditingController _locationController = TextEditingController(); + final String _locationPosition = ''; + final DateFormat formatter = DateFormat('dd/MM/yyyy'); final DateTime now = DateTime.now(); DateTime? _selectedDate; TimeOfDay? _selectedTime; + late GoogleMapController googleMapController; + + static const CameraPosition initialCameraPosition = CameraPosition( + target: LatLng(7.8939100, -72.5078200), + zoom: 14.4746, + ); + + Set markers = {}; + + Future _determinePosition() async { + bool serviceEnabled; + LocationPermission permission; + + serviceEnabled = await Geolocator.isLocationServiceEnabled(); + + if (!serviceEnabled) { + return Future.error('Location services are disabled'); + } + + permission = await Geolocator.checkPermission(); + + if (permission == LocationPermission.denied) { + permission = await Geolocator.requestPermission(); + + if (permission == LocationPermission.denied) { + return Future.error('Location permission denied'); + } + } + + if (permission == LocationPermission.deniedForever) { + return Future.error('Location permissions are permanently denied'); + } + + Position position = await Geolocator.getCurrentPosition(); + + return position; + } + Future _selectDate(BuildContext context) async { final DateTime? picked = await showDatePicker( context: context, @@ -63,6 +109,25 @@ class _ServiceScreenState extends State { super.initState(); } + late String lat; + late String long; + var coordinates; + + Future getLocationName(double latitude, double longitude) async { + String address; + List placemarks = + await placemarkFromCoordinates(latitude, longitude); + Placemark place = placemarks[0]; + + if (place.thoroughfare != '' || place.subThoroughfare != '') { + address = + "${place.thoroughfare}, ${place.subThoroughfare} ${place.subLocality}, ${place.locality}, ${place.administrativeArea}"; + } else { + address = ''; + } + return address; + } + @override Widget build(BuildContext context) { List opc = ["Servicio", "Opción 1", "Opción 2", "Opción 3"]; @@ -74,201 +139,300 @@ class _ServiceScreenState extends State { drawer: DrawerMenu(), body: SingleChildScrollView( reverse: true, - child: Stack( - children: [ - Padding( - padding: const EdgeInsets.all(20.0), - child: Builder( - builder: (BuildContext context) { - return ElevatedButton( - style: ElevatedButton.styleFrom( - backgroundColor: Colors.white, - shape: const CircleBorder(), - elevation: 3, - minimumSize: const Size(50, 50), - ), - child: const Icon( - Icons.menu, - color: Colors.black, - size: 30, - ), - onPressed: () { - Scaffold.of(context).openDrawer(); - }, - ); - }, - ), - ), - Padding( - padding: const EdgeInsets.only(top: 23, left: 100, right: 25), - child: Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(50), - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.4), - spreadRadius: 1, - blurRadius: 2, - offset: - const Offset(1, 2), // changes position of shadow - ), - ], - ), - child: DropdownButtonFormField( - value: defaultValue, - elevation: 0, - decoration: InputDecoration( - filled: true, - fillColor: Colors.white, - contentPadding: const EdgeInsets.symmetric( - horizontal: 16, vertical: 8), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(50), - borderSide: BorderSide.none, - ), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(50), - borderSide: BorderSide.none, - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(50), - borderSide: BorderSide.none, - ), - ), - items: opc.map((e) { - return DropdownMenuItem( - value: e, - child: Text( - e, - style: const TextStyle(fontWeight: FontWeight.bold), - ), - ); - }).toList(), - onChanged: (value) { - print(value); - }, - ), - ), - ), - ], - ), - ), - bottomNavigationBar: Container( - decoration: const BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.only( - topRight: Radius.circular(50), topLeft: Radius.circular(50))), - height: MediaQuery.of(context).size.height / 2.3, child: Column( children: [ - const SizedBox(height: 15), - SizedBox( - width: 300, - child: Form( - child: Column( - children: [ - TextFormField( - // controller: _cedulaController, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.near_me), - hintText: 'Dirección'), - ), - const SizedBox(height: 15), - TextFormField( - // controller: _cedulaController, - readOnly: true, - onTap: () async { - final String? profesional = await Navigator.push( - context, - CupertinoPageRoute( - builder: (BuildContext context) { - return const ProfessionalScreen(); - }, - ), - ) as String?; - - if (profesional != null) { + Stack( + children: [ + SizedBox( + height: MediaQuery.of(context).size.height * 0.6, + child: GoogleMap( + mapType: MapType.normal, + initialCameraPosition: initialCameraPosition, + markers: markers, + zoomControlsEnabled: false, + onMapCreated: (GoogleMapController controller) { + googleMapController = controller; + }, + onCameraIdle: () { + if (coordinates != null) { + getLocationName( + coordinates.latitude, coordinates.longitude) + .then((locationName) { setState(() { - // _profession = profesional; + _locationController.text = locationName; }); - } - }, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.assignment_ind_rounded), - suffixIcon: Icon(Icons.arrow_drop_down), - hintText: 'Seleccionar profesional'), - ), - const SizedBox(height: 15), - Row( - children: [ - SizedBox( - width: 150, - child: TextFormField( - onTap: () { - _selectDate(context); - }, - readOnly: true, - decoration: InputDecoration( - prefixIcon: const Icon(Icons.calendar_month), - suffixIcon: _selectedDate == null - ? const Icon(Icons.arrow_drop_down) - : null, - hintText: 'Fecha', - ), - controller: TextEditingController( - text: _selectedDate == null - ? '' - : formatter.format(_selectedDate!)), + }); + } + }, + + // onCameraIdle: () { + // setState(() { + // if (coordinates != null) { + + // placemarkFromCoordinates(coordinates.target.latitude, coordinates.target.longitude); + // _locationController.text = coordinates.toString(); + // } + // }); + // }, + onCameraMove: (position) { + setState(() { + coordinates = position.target; + }); + }, + gestureRecognizers: < + Factory>{ + Factory( + () => EagerGestureRecognizer(), + ), + }, + ), + ), + const Positioned( + bottom: 0, + right: 0, + left: 0, + top: 0, + child: Icon( + Icons.location_on, + size: 40, + color: Colors.red, + ), + ), + Positioned( + bottom: 10, + right: 20, + child: FloatingActionButton( + onPressed: () async { + try { + Position position = await _determinePosition(); + + googleMapController.animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition( + target: LatLng( + position.latitude, + position.longitude, + ), + zoom: 17), ), + ); + setState(() {}); + } catch (e) { + Get.snackbar( + 'ubicación desactivada', + 'Por favor activa la ubicacion de tu telefono.', + snackPosition: SnackPosition.TOP, + ); + } + + // markers.clear(); + + // markers.add(Marker( + // markerId: const MarkerId('currentLocation'), + // position: + // LatLng(position.latitude, position.longitude))); + }, + elevation: 0, + child: const Icon(Icons.location_on), + ), + ), + Padding( + padding: const EdgeInsets.all(20.0), + child: Builder( + builder: (BuildContext context) { + return ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: Colors.white, + shape: const CircleBorder(), + elevation: 3, + minimumSize: const Size(50, 50), ), - SizedBox( - width: 150, - child: TextFormField( - onTap: () { - _selectTime(context); - }, - readOnly: true, - decoration: const InputDecoration( - suffixIcon: Icon(Icons.arrow_drop_down), - hintText: 'Hora', - ), - controller: TextEditingController( - text: _selectedTime == null - ? '' - : ' ${_selectedTime!.format(context)}'), - ), + child: const Icon( + Icons.menu, + color: Colors.black, + size: 30, + ), + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + ); + }, + ), + ), + Padding( + padding: + const EdgeInsets.only(top: 23, left: 100, right: 25), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(50), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.4), + spreadRadius: 1, + blurRadius: 2, + offset: const Offset( + 1, 2), // changes position of shadow ), ], ), - const SizedBox(height: 15), - TextFormField( - // controller: _cedulaController, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.message_outlined), - hintText: 'Observaciones'), - ), - const SizedBox(height: 30), - ElevatedButton( - onPressed: () {}, - style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF2BA4EC), - shape: RoundedRectangleBorder( + child: DropdownButtonFormField( + value: defaultValue, + elevation: 0, + decoration: InputDecoration( + filled: true, + fillColor: Colors.white, + contentPadding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 8), + border: OutlineInputBorder( borderRadius: BorderRadius.circular(50), + borderSide: BorderSide.none, + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(50), + borderSide: BorderSide.none, + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(50), + borderSide: BorderSide.none, ), - elevation: 0, - minimumSize: const Size(230, 50), ), - child: const Text( - 'Solicitar servicio', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 18, - ), + items: opc.map((e) { + return DropdownMenuItem( + value: e, + child: Text( + e, + style: + const TextStyle(fontWeight: FontWeight.bold), + ), + ); + }).toList(), + onChanged: (value) { + print(value); + }, + ), + ), + ), + ], + ), + Container( + width: double.infinity, + decoration: const BoxDecoration(color: Colors.white), + child: Column( + children: [ + const SizedBox(height: 5), + SizedBox( + width: 320, + child: Form( + child: Column( + children: [ + TextFormField( + controller: _locationController, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.near_me), + hintText: 'Dirección'), + ), + const SizedBox(height: 15), + TextFormField( + // controller: _cedulaController, + readOnly: true, + onTap: () async { + final String? profesional = + await Navigator.push( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return const ProfessionalScreen(); + }, + ), + ) as String?; + + if (profesional != null) { + setState(() { + // _profession = profesional; + }); + } + }, + decoration: const InputDecoration( + prefixIcon: + Icon(Icons.assignment_ind_rounded), + suffixIcon: Icon(Icons.arrow_drop_down), + hintText: 'Seleccionar profesional'), + ), + const SizedBox(height: 15), + Row( + children: [ + SizedBox( + width: 180, + child: TextFormField( + onTap: () { + _selectDate(context); + }, + readOnly: true, + decoration: InputDecoration( + prefixIcon: + const Icon(Icons.calendar_month), + suffixIcon: _selectedDate == null + ? const Icon(Icons.arrow_drop_down) + : null, + hintText: 'Fecha', + ), + controller: TextEditingController( + text: _selectedDate == null + ? '' + : formatter.format(_selectedDate!)), + ), + ), + SizedBox( + width: 140, + child: TextFormField( + onTap: () { + _selectTime(context); + }, + readOnly: true, + decoration: const InputDecoration( + suffixIcon: Icon(Icons.arrow_drop_down), + hintText: 'Hora', + ), + controller: TextEditingController( + text: _selectedTime == null + ? '' + : ' ${_selectedTime!.format(context)}'), + ), + ), + ], + ), + const SizedBox(height: 15), + TextFormField( + // controller: _cedulaController, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.message_outlined), + hintText: 'Observaciones'), + ), + const SizedBox(height: 20), + ElevatedButton( + onPressed: () {}, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFF2BA4EC), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + ), + elevation: 0, + minimumSize: const Size(230, 50), + ), + child: const Text( + 'Solicitar servicio', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + ), + ], ), ), - ], - ), + ), + ], ), ), ], diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 2db5f1b..2da9559 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -9,10 +9,12 @@ import cloud_firestore import firebase_auth import firebase_core import firebase_storage +import geolocator_apple func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FLTFirebaseStoragePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseStoragePlugin")) + GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 1b9631b..264af2f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -240,6 +240,86 @@ packages: url: "https://pub.dev" source: hosted version: "10.4.0" + geocoding: + dependency: "direct main" + description: + name: geocoding + sha256: b34c0501bbbaf3190b85bef3078b27cf66c28a8915c6d3af50d67f356aa7da31 + url: "https://pub.dev" + source: hosted + version: "2.1.0" + geocoding_android: + dependency: transitive + description: + name: geocoding_android + sha256: "5a1fc0cec9b0497b44ca31c1fa8d1c891f3aded1053e6bb2eac075d3bd1bf046" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + geocoding_ios: + dependency: transitive + description: + name: geocoding_ios + sha256: c85495ce8fb34e4fbd2dd8fc5f79263d622d9f88c4af948c965daf6b27a7f3a1 + url: "https://pub.dev" + source: hosted + version: "2.1.0" + geocoding_platform_interface: + dependency: transitive + description: + name: geocoding_platform_interface + sha256: "8848605d307d844d89937cdb4b8ad7dfa880552078f310fa24d8a460f6dddab4" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + geolocator: + dependency: "direct main" + description: + name: geolocator + sha256: "5c23f3613f50586c0bbb2b8f970240ae66b3bd992088cf60dd5ee2e6f7dde3a8" + url: "https://pub.dev" + source: hosted + version: "9.0.2" + geolocator_android: + dependency: transitive + description: + name: geolocator_android + sha256: "2ba24690aee0a3e1b6b7bd47c2711a50c874e95e4c758346589d35194adf6d6a" + url: "https://pub.dev" + source: hosted + version: "4.1.7" + geolocator_apple: + dependency: transitive + description: + name: geolocator_apple + sha256: "22b60ca3b8c0f58e6a9688ff855ee39ab813ca3f0c0609a48d282f6631266f2e" + url: "https://pub.dev" + source: hosted + version: "2.2.5" + geolocator_platform_interface: + dependency: transitive + description: + name: geolocator_platform_interface + sha256: af4d69231452f9620718588f41acc4cb58312368716bfff2e92e770b46ce6386 + url: "https://pub.dev" + source: hosted + version: "4.0.7" + geolocator_web: + dependency: transitive + description: + name: geolocator_web + sha256: f68a122da48fcfff68bbc9846bb0b74ef651afe84a1b1f6ec20939de4d6860e1 + url: "https://pub.dev" + source: hosted + version: "2.1.6" + geolocator_windows: + dependency: transitive + description: + name: geolocator_windows + sha256: f5911c88e23f48b598dd506c7c19eff0e001645bdc03bb6fecb9f4549208354d + url: "https://pub.dev" + source: hosted + version: "0.1.1" get: dependency: "direct main" description: @@ -256,6 +336,38 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.0" + google_maps_flutter: + dependency: "direct main" + description: + name: google_maps_flutter + sha256: "24392ef192f3b00bcd93151375676805a9933574423a5bd5509a0ead2e8a4215" + url: "https://pub.dev" + source: hosted + version: "2.2.5" + google_maps_flutter_android: + dependency: transitive + description: + name: google_maps_flutter_android + sha256: ee3c1a63983b8ba17a9a7c1233c3542fbfbc0ebf540d3aa9b8fd5162681e0219 + url: "https://pub.dev" + source: hosted + version: "2.4.10" + google_maps_flutter_ios: + dependency: transitive + description: + name: google_maps_flutter_ios + sha256: e9ad74415a222573625a2c1717adc1e375b18e8ce660fc12db734d1bda1132d4 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + google_maps_flutter_platform_interface: + dependency: transitive + description: + name: google_maps_flutter_platform_interface + sha256: a07811d2b82055815ede75e1fe4b7b76f71a0b4820b26f71bdaddd157d6a3e20 + url: "https://pub.dev" + source: hosted + version: "2.2.6" google_sign_in: dependency: "direct main" description: @@ -448,6 +560,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.1" + simple_gesture_detector: + dependency: transitive + description: + name: simple_gesture_detector + sha256: "86d08f85f1f58583b7b4b941d989f48ea6ce08c1724a1d10954a277c2ec36592" + url: "https://pub.dev" + source: hosted + version: "0.2.0" sky_engine: dependency: transitive description: flutter @@ -477,6 +597,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" + source: hosted + version: "2.1.0" string_scanner: dependency: transitive description: @@ -485,6 +613,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + table_calendar: + dependency: "direct main" + description: + name: table_calendar + sha256: "7f1270313c0cdb245b583ed8518982c01d4a7e95869b3c30abcbae3b642c45d0" + url: "https://pub.dev" + source: hosted + version: "3.0.8" term_glyph: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index cb7aa4c..ad17d61 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,21 +37,25 @@ dependencies: cupertino_icons: ^1.0.2 # Google Sign In - firebase_auth: ^4.3.0 - firebase_core: ^2.8.0 - google_sign_in: ^6.0.2 - provider: ^6.0.5 - get: ^4.6.5 - font_awesome_flutter: ^10.4.0 - flutter_otp_text_field: ^1.1.1 - intl_phone_field: ^3.1.0 - cloud_firestore: ^4.5.0 - diacritic: ^0.1.3 - firebase_storage: ^11.1.0 - image_picker: ^0.8.7+1 - flutter_animate: ^4.1.1+1 - flutter_rating_bar: ^4.0.1 - intl: + firebase_auth: + firebase_core: + google_sign_in: + provider: + get: + font_awesome_flutter: + flutter_otp_text_field: + intl_phone_field: + cloud_firestore: + diacritic: + firebase_storage: + image_picker: + flutter_animate: + flutter_rating_bar: + table_calendar: + intl: + google_maps_flutter: ^2.2.5 + geolocator: ^9.0.2 + geocoding: ^2.1.0 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8b6d468..1ece8f2 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + GeolocatorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("GeolocatorWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index b93c4c3..7f101a7 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + geolocator_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST