From ebcc95d06a7dff9d225ec9242800d30b1bdfbbfb Mon Sep 17 00:00:00 2001 From: Juan Felipe Duarte <70235683+DuarteJFelipe@users.noreply.github.com> Date: Tue, 6 Jun 2023 17:15:49 -0500 Subject: [PATCH] image --- lib/constansts.dart | 1 + lib/src/components/network_utility.dart | 17 +++++++ lib/src/components/photo_view.dart | 12 +++++ lib/src/screens/service.dart | 64 ++++++++++++++++++++++--- pubspec.lock | 56 ++++++++++++++-------- pubspec.yaml | 6 ++- 6 files changed, 128 insertions(+), 28 deletions(-) create mode 100644 lib/constansts.dart create mode 100644 lib/src/components/network_utility.dart diff --git a/lib/constansts.dart b/lib/constansts.dart new file mode 100644 index 0000000..dbefbc2 --- /dev/null +++ b/lib/constansts.dart @@ -0,0 +1 @@ +const String apiKey = 'AIzaSyBqZNw7kj3pEYH-pusqTMxXhbja8HR7eOc'; diff --git a/lib/src/components/network_utility.dart b/lib/src/components/network_utility.dart new file mode 100644 index 0000000..303f1ed --- /dev/null +++ b/lib/src/components/network_utility.dart @@ -0,0 +1,17 @@ +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart' as http; + +class NetworkUtility { + static Future fetchUrl(Uri uri, + {Map? headers}) async { + try { + final response = await http.get(uri, headers: headers); + if (response.statusCode == 200) { + return response.body; + } + } catch (e) { + debugPrint('error - ${e.toString()}'); + } + return null; + } +} diff --git a/lib/src/components/photo_view.dart b/lib/src/components/photo_view.dart index 936aee5..2d9a5ae 100644 --- a/lib/src/components/photo_view.dart +++ b/lib/src/components/photo_view.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:firebase_storage/firebase_storage.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; @@ -101,6 +102,17 @@ class LocalPhoto extends StatelessWidget { @override Widget build(BuildContext context) { + if (kIsWeb) { + return ClipOval( + child: Image.network( + file.path, + width: photoSize, + height: photoSize, + fit: BoxFit.cover, + ), + ); + } + return ClipOval( child: Image.file( file, diff --git a/lib/src/screens/service.dart b/lib/src/screens/service.dart index b91bd94..ccbdda6 100644 --- a/lib/src/screens/service.dart +++ b/lib/src/screens/service.dart @@ -9,8 +9,10 @@ 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/constansts.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/drawer_menu.dart'; +import 'package:prosappco/src/components/network_utility.dart'; import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/user_model.dart'; import 'package:prosappco/src/screens/professional.dart'; @@ -201,6 +203,20 @@ class _ServiceScreenState extends State { return address; } + void placeAutoComplete(String query) async { + Uri uri = + Uri.https("maps.googleapis.com", "maps/api/place/autocomplete/json", { + "input": query, + "key": apiKey, + }); + + String? response = await NetworkUtility.fetchUrl(uri); + + if (response != null) { + print(response); + } + } + @override Widget build(BuildContext context) { if (kIsWeb) { @@ -237,8 +253,8 @@ class _ServiceScreenState extends State { }, ); }, - child: Row( - children: const [ + child: const Row( + children: [ Icon(Icons.location_on), SizedBox(width: 8), Text('Ingresar mi ubicación'), @@ -251,7 +267,27 @@ class _ServiceScreenState extends State { ), // Texto del título ), body: Container( - child: const Text('data'), + child: ElevatedButton( + onPressed: () { + placeAutoComplete("Dubai"); + }, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFF2BA4EC), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + ), + elevation: 0, + minimumSize: const Size(230, 50), + ), + child: const Text( + 'Aceptar', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + ), ), ); } @@ -726,10 +762,24 @@ class _ServiceScreenState extends State { class _EnterLocationDialog extends StatelessWidget { const _EnterLocationDialog({super.key}); + void placeAutoComplete(String query) async { + Uri uri = + Uri.https("maps.googleapis.com", "/maps/api/place/autocomplete/json", { + "input": query, + "key": apiKey, + }); + + String? response = await NetworkUtility.fetchUrl(uri); + + if (response != null) { + print(response); + } + } + @override Widget build(BuildContext context) { return AlertDialog( - content: Container( + content: SizedBox( height: 200, child: Column( children: [ @@ -743,12 +793,14 @@ class _EnterLocationDialog extends StatelessWidget { const SizedBox(height: 20), TextFormField( decoration: const InputDecoration( - hintText: 'Ubicación', + hintText: 'Escribe tu ubicación', ), ), const SizedBox(height: 20), ElevatedButton( - onPressed: () {}, + onPressed: () { + placeAutoComplete("Dubai"); + }, style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF2BA4EC), shape: RoundedRectangleBorder( diff --git a/pubspec.lock b/pubspec.lock index 2233c35..7a4005f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -77,10 +77,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.17.1" community_material_icon: dependency: "direct main" description: @@ -145,6 +145,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.4" + file_picker: + dependency: "direct main" + description: + name: file_picker + sha256: b1729fc96627dd44012d0a901558177418818d6bd428df59dcfeb594e5f66432 + url: "https://pub.dev" + source: hosted + version: "5.3.2" firebase_auth: dependency: "direct main" description: @@ -505,7 +513,7 @@ packages: source: hosted version: "0.11.0+2" http: - dependency: transitive + dependency: "direct main" description: name: http sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" @@ -524,10 +532,10 @@ packages: dependency: "direct main" description: name: image_picker - sha256: cb25f04595a88450970dbe727243ba8cd21b6f7e0d7d1fc5b789fc6f52e95494 + sha256: "9978d3510af4e6a902e545ce19229b926e6de6a1828d6134d3aab2e129a4d270" url: "https://pub.dev" source: hosted - version: "0.8.7+1" + version: "0.8.7+5" image_picker_android: dependency: transitive description: @@ -580,10 +588,10 @@ packages: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" lints: dependency: transitive description: @@ -596,10 +604,10 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.15" material_color_utilities: dependency: transitive description: @@ -612,10 +620,10 @@ packages: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" nested: dependency: transitive description: @@ -628,10 +636,10 @@ packages: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" petitparser: dependency: transitive description: @@ -761,10 +769,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.5.1" timezone: dependency: transitive description: @@ -885,6 +893,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.4.2" + win32: + dependency: transitive + description: + name: win32 + sha256: "7dacfda1edcca378031db9905ad7d7bd56b29fd1a90b0908b71a52a12c41e36b" + url: "https://pub.dev" + source: hosted + version: "5.0.3" xdg_directories: dependency: transitive description: @@ -902,5 +918,5 @@ packages: source: hosted version: "6.2.2" sdks: - dart: ">=2.19.3 <3.0.0" + dart: ">=3.0.0 <4.0.0" flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index df8555f..a46d217 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -47,7 +47,7 @@ dependencies: intl_phone_field: cloud_firestore: diacritic: - image_picker: + image_picker: ^0.8.7+5 flutter_animate: flutter_rating_bar: table_calendar: @@ -63,7 +63,9 @@ dependencies: firebase_messaging: ^14.5.0 flutter_local_notifications: ^14.0.0+1 responsive_builder: ^0.7.0 - + file_picker: ^5.3.2 + http: ^0.13.5 + dev_dependencies: flutter_test: sdk: flutter